1

Spring Security Login+ajaxログインを使用しています。ユーザーが間違ったクレデンシャルを提供した場合、「無効なユーザー/パスワード」というメッセージを表示する必要があります

これはajaxログインjqueryコードです。

$(document).ready(function(){
$('#login_btn').click(function(){
    //alert("aaa"+validateLoginForm());
    if(validateLoginForm()){

        sprpst = 'j_username='+$('#j_username').val()+'&j_password='+$('#j_password').val();
        $.post('j_spring_security_check',sprpst,function(data1) {

            window.location.reload();

        }); 
        $.blockUI({ message : '<h1><img src="images/busy.gif" /> Loading...</h1>' });
    }
});
});

これは春のセキュリティログインです

<form-login login-page="/login" default-target-url="/deals" authentication-failure-url="/deals?login_error=1"/>

どんな助けでもありがたいです。

ありがとう :)

4

1 に答える 1

2

必要なもの:

  1. カスタムAuthenticationEntryPointを提供します(デフォルトのLoginUrlAuthenticationEntryPointを基本クラスとして使用できます)。メソッドで、これAuthenticationEntryPoint.commence(...)がAJAX呼び出しであることを確認し、ログインページにリダイレクトする代わりに403コードを返します。
  2. SpringSecurityconfでカスタムAuthenticationEntryPointを設定します。
  3. AJAX応答のコードを確認してください。403が含まれている場合は、間違った資格情報に関する対応するエラーメッセージを表示します。

カスタム認証エントリポイントのコードは次のようになります。

public class CustomAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
        String header = request.getHeader("X-Requested-With");
        if (StringUtils.hasText(header) && header.equals("XMLHttpRequest") && authException != null) {
            response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
        } else {
            super.commence(request, response, authException);
        }
    }
}
于 2013-03-26T10:02:47.847 に答える