2017-09-06 17 views
0

を働いていないpermitAll私は、このセキュリティ設定を持っている:春のセキュリティは

@Override 
    public void configure(HttpSecurity http) throws Exception { 
     http 
      .addFilterBefore(
        new JwtLoginFilter("/login", authenticationManager()), 
        UsernamePasswordAuthenticationFilter.class) 
      .addFilterBefore(
        new JwtAuthenticationFilter(), 
        UsernamePasswordAuthenticationFilter.class); 
     http.csrf().disable() 
       .authorizeRequests().antMatchers("/", "/register").permitAll() 
       .and() 
       .authorizeRequests().anyRequest().authenticated(); 
    } 

2つのフィルタが認証作業を行っている:ポスト本体内の資格情報をチェックし、応答にクッキーを追加loginFilterを。 authenticationFilterは認証クッキーをチェックします。

しかし、permitAllはできませんルートルートおよび「/登録」ルートパス(別名。まだ私がpermitAllは、これらのルートはフィルタを通過させるだろうと思ったauthenticationFilter、経由する)

何が問題になっていますか?

+0

私はwebSecurity.ignoringを使ってこの問題を回避できますが、なぜ上記のコードはうまくいかないのでしょうか? –

答えて

3

permitAll()フィルタを無視しません。すべてのフィルタが処理された後で、要求のセキュリティコンテキストにAuthenticationが存在するかどうかにかかわらず、アクセスを許可します。

フィルターと、チェックされていない/キャッチされていない例外を投げたり、失敗した認証で明示的に応答を送信して、Spring Securityの実行フローを破らないようにするために、AuthenticationProviderの実装をチェックする必要があります。

関連する問題