2017-03-26 8 views
0

私はすべてのフォームログインがajaxベースのアプローチ(リダイレクトなしなど)を使用していて、フォームログインにはうまくいきます。基本的な認証の場合基本認証で拒否されたアクセスを適切に処理します

私は今も正常に失敗したログイン試行を処理すると、ここでいくつかの問題があるようです:私は罰金であるもはや例外をキャッチするControllerAdviceに頼ることはできませんが、私が行うには、カスタムBasicAuthenticationEntryPointを試してみましたいくつかの変更...しかし、私がそこから行うことができるのは、スローされている実際の例外を変更することでした..それは私のコントローラのアドバイスによってまだ捕らえられていませんでした。

私は春のセキュリティがspring mvc/adviceの世界の外で動作することを理解しています。そのため、ユーザーに送信されるデフォルトのメッセージをどのように捕捉して変更できますか? (ベーシック認証のために、フォーム/セッションのために、これはすでに正常に動作します。..)

答えて

1

あなたは

@Component 
public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable { 

    public void commence(HttpServletRequest request, 
        HttpServletResponse response, 
        AuthenticationException e) throws IOException { 

     // handle the authentication exception 
     // you can return json with Jackson and 
     // write it to the HttpServletResponse. 
    } 
} 

インタフェースAuthenticationEntryPointを実装することで、認証の例外を処理するカスタムauthentcationエントリポイントを作成することができますその後、お使いのセキュリティ設定クラスにそれをautowireと.exceptionHandling()

@Autowired 
private CustomAuthenticationEntryPoint unauthorizedHandler; 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .exceptionHandling() 
      .authenticationEntryPoint(unauthorizedHandler); 
      // ... the rest of your configuration. 
} 

であなたHttpSecurityに例外処理を追加することができますあなたはフィンもできますこの投稿の私の詳細。 AuthenticationExceptionが無効な資格情報を処理する処理

Customize authentication failure response in Spring Security using AuthenticationFailureHandler

HttpSecurityドキュメント

http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/config/annotation/web/builders/HttpSecurity.html


EDIT。

の処理AccessDeniedExceptionは、特定のロールまたは権限のメソッドを保護するなど、メソッドレベルのセキュリティを処理します。

+1

ありがとう、それは素晴らしい作品です。私はそれをhttp.httpBasic()。authenticationEntryPoint(auth);に追加しなければなりませんでした。私の設定のためかどうかは分かりませんが、今は少なくとも動作します。 – mortenoh

関連する問題