4

Spring Security 3とLDAPで認証が行われるSpringでWebアプリケーションを開発しています。

これは、私のコードからのフォーム ログイン スニペットです。

<security:form-login
    authentication-failure-url="/index.xhtml?error=true"
    default-target-url="/SomeDefaultUrl.xhtml"
    login-page="/index.xhtml" />

認証が失敗すると、アプリケーションは「/index.xhtml?error=true」URL にリダイレクトされます。問題は、「エラー」変数をキャッチして、index.xhtml ファイルに認証失敗メッセージを表示する方法がわからないことです。私はSpring mvcを使用していません。

2 つ目の問題は、authentication-failure-url の変更が機能しないことです。

<security:form-login
    authentication-failure-url="/error.xhtml"
    default-target-url="/SomeDefaultUrl.xhtml"
    login-page="/index.xhtml" />

authentication-failure-url を変更しましたが、この変更にもかかわらず、変数なしで index.xhtml ファイルにリダイレクトされます。

どうすればこの問題を解決できますか?

4

4 に答える 4

3

あなたindex.xhtmlがJSPの場合、これを行うことができます(Spring 3 Recipes bookから直接):

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${not empty param.error}">
    Login error.
    Reason ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
</c:if>
于 2012-12-05T09:56:05.837 に答える
1

重要:パラメータとして/index.xhtml?error=true送信errorGETます。

index.xhtmlJSP ファイルの場合は、暗黙的requestな参照を使用してそのパラメーターにアクセスできます。

<%= request.getParameter("error") %>

Web コントローラー メソッド/サーブレットの URL の場合、オブジェクトからパラメーターindex.xhtmlを取得する必要があります。errorRequest

public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException 
{       
    String error = req.getParameter("error");
}

最後に、index.xhtmlプレーンな html ファイルの場合は、Java Script を使用してそのパラメーターを取得できます: javascript から GET パラメーターを取得する方法は?

2 番目の質問: プロジェクトを適切に再構築してください。あなたの変更に気付かなかったようです。

于 2012-12-04T12:45:21.077 に答える