
securityconflgで以下ののfailureUrlをコメントアウトして、
failureHandlerを実装したら、認証失敗時に表示されていたエラーメッセージが表示されなくなりました。
デフォルトで勝手にやってくれた認可エラーメッセージの格納が
failureHandlerの実装により消えたということでしょうか?
また、どうしたら消えたデフォルトの機能を実装できるのでしょうか
よろしくお願いします。
java
1class securityconflg 2------------------上省略------------ 3 .successHandler(successHandler())//認証成功時呼ぶ 4 .failureHandler(failureHandler())//認証失敗時呼ぶ 5 .loginProcessingUrl("/login") 6 .usernameParameter("username") 7 .passwordParameter("password") 8// .defaultSuccessUrl("/searchDelivery",true)//認証成功時呼ぶがハンドラーが呼ばれなくなるためコメント 9// .failureUrl("/login")//認証失敗時呼ぶがハンドラーが呼ばれなくなるためコメント 10---------------
補足
failureHandler()で以下の独自実装クラスを呼んでおります(省略しまくってごめんなさい)
public class TestAuthenticationFailureHandler implements AuthenticationFailureHandler{ //リダイレクト用url String url = null; //引数増やしてリダイレクトする機能が拡張されたやつ private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy(); //コンストラクタ public CarNoAuthenticationFailureHandler(String url) { this.url = url; } @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { //ログイン画面にリダイレクト redirectStrategy.sendRedirect(request,response,url); }
jsp
1<c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}" />
解決策
.failureForwardUrl("/login")
という勝手にフォワードしてくれる処理があったのでこれを使い独自実装クラスは
呼び出さないことで解決。(フォワードしたいだけだったので)
回答1件
あなたの回答
tips
プレビュー