j_security_checkに転送する方法は?
質問
私は、フォームベースの認証(JBOSS / JAAS)を使用していますが、私は、ログインしようとする前に、いくつかのチェックを行うことができますので、私のフォームは私のサーブレットにデータを送信されます。
今、私はj_security_checkでするのではなく、私が試したことは(404エラー)動作しませんでし転送する必要が...
どのように私は(アプリケーションがhttps / SSSL上で実行されている注意してください)のj_security_checkに前進/リダイレクトすることができますか?
私はそれがリダイレクトで動作させることが可能と...
(ユーザー/パスは、ブラウザの履歴、などにとどまるよう)paramsがURLに行くが、それは安全ではありません任意のアイデア?
解決
私は、これは古い記事で見たが、私は答えを共有したいと思いました。
元の要求がPOSTである場合は、何らかの処理を行った後、、あなたは単に前方のj_security_checkすることができます。
...
request.getParameterMap().put( "j_username", new String[]{ userId } );
request.getParameterMap().put( "j_password", new String[]{ password } );
try
{
request.getRequestDispatcher("/j_security_check").forward( request , response );
return null;
}
catch (ServletException e)
{
logger.error( e );
}
catch (IOException e)
{
logger.error( e );
}
他のヒント
Tomcatは唯一、それはそのセッションの前に、ログイン・プロセスを開始した場合j_security_check
する要求を受け入れます。だから、最初のあなたは、セキュリティ制約のリソースにアクセスしようとする必要があります。その後、Tomcatは、ログインフォームにリダイレクトされます。そうしてあなたはj_security_check
にアクセスすることを許可されています。
私は、これはあまりにも古い質問です知っているが、私は同じ問題と、私はそれがこのようなものを使用していた解決することが分かっユニークな方法を持っています:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String user = req.getParameter("j_username");
String pass = req.getParameter("j_password");
resp.sendRedirect("/Project-web/j_security_check?j_username=" + user + "&j_password=" + pass);
}
:私はちょうど同じ問題を抱えていたし、他の人の答えは私のために働くことが証明されていないので、
、私は自分のソリューションを共有したいと思いました
1)、たとえば、loginForward.jspを新しいJSPを作成し、転送の目的のためにのみます:
<%@ page language="java" %>
<%
final String username = request.getParameter("j_username");
final String password = request.getParameter("j_password");
%>
<body onload="document.getElementById('creds').submit()">
<form name="creds" id='creds' method="POST" action="j_security_check">
<input type="hidden" name="j_username" value="<%= username %>">
<input type="hidden" name="j_password" value="<%= password %>">
</form>
</body>
2)サーブレットでは、前方にそのJSPに:
final String redirectURL = String.format("loginForward.jsp j_username=%s&j_password=%s", username, password);
RequestDispatcher requestDispatcher = request.getRequestDispatcher(redirectURL);
requestDispatcher.forward(request, response);
return;
所属していません StackOverflow