2016-12-13 6 views
0

私はSpring SecurityのAuthenticationManagerBeanをカスタムフィルタ内で使用する必要がありますが、常にnullを返すようです。私は春のブート1.3.8を使用しています。Autowiring Spring AuthenticationManagerフィルタは常にnullを返します

@Configuration 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 


     @Override 
     @Bean(name = BeanIds.AUTHENTICATION_MANAGER) 
     public AuthenticationManager authenticationManagerBean() throws Exception { 
      return super.authenticationManagerBean(); 
     } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 

    } 



} 

フィルターコード::

public class MyFilter extends OncePerRequestFilter { 

    private TokenExtractor tokenExtractor = new BearerTokenExtractor(); 

    @Autowired 
    private AuthenticationManager authenticationManager; 



    @Override 
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) 
      throws ServletException, IOException { 


      //some checks 

Authentication receivedAuthentication = tokenExtractor.extract(request); 
receivedAuthentication.setAuthenticated(true); 
       authenticationManager.authenticate(receivedAuthentication); 
       SecurityContextHolder.getContext().setAuthentication(receivedAuthentication); 

     } 
    } 



} 

authenticationManagerがnullであるため、例外がスローされます。ここのコードからの抜粋です。

お手数ですが、

+0

あなたはhttp://stackoverflow.com/questions/5417509/get-instance-of-authenticationmanager-manuallyまたはその1つを参照してください。http://stackoverflow.com/questions/21633555/how-to-inject-authenticationmanagerager -using-java-configuration-in-a-custom-filter?を使用していますか? – Victor

+0

あなたは[リンク](http://stackoverflow.com/questions/21633555/how-to-inject-authenticationmanager-using-java-configuration-in-a-custom-filter)またはその1 [ AuthenticationManager Manual](http://stackoverflow.com/questions/5417509/get-instance-of-authenticationmanager-manually)? – Victor

+0

[link](http://stackoverflow.com/questions/21633555/how-to-inject-authenticationmanager-using-java-configuration-in-a-custom-filter)またはその1つの[Get instance of AuthenticationManager Manual](http://stackoverflow.com/questions/5417509/get-instance-of-authenticationmanager-manually)? – Victor

答えて

0

BeanIds.AUTHENTICATION_MANAGERの値は"org.springframework.security.authenticationManager"です。したがって、"authenticationManager"という名前のBeanはありません。

また、私はあなたのフィルターに@Componentが必要だと思います。

幸運。

+0

あなたの提案をありがとう。しかしそれはまだヌルを与えている。 '@ Autowired'でも' @ Qualifier'を使ってみましたが、同じことです。 –

+0

あなたのフィルターに@Componentが必要だと思います。メソッドの名前を変更するという提案を取り消します。私はそれが既存の方法を覆していることを忘れていました。 –

+0

これはあまり変更されませんでした。とにかく、認証を設定する別の方法が見つかりました。 –

関連する問題