如何禁用某些资源路径的spring安全性

时间:2017-06-29 02:31:39

标签: spring spring-boot spring-security

我在Spring启动应用程序中实现spring security以执行JWT验证,其中我有一个过滤器,一个AuthenticationManager和一个AuthenticationProvider。我想要做的是我想禁用某些资源路径的安全性(基本上使它们不安全)。

我在securityConfig类(从WebSecuirtyConfigurerAdapater扩展)中尝试的内容如下:

protected void configure(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(),
                UsernamePasswordAuthenticationFilter.class);
        httpSecurity.authorizeRequests().antMatchers("/**").permitAll();
        httpSecurity.csrf().disable();
        httpSecurity.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    } 

我现在要做的是,我想让我的所有资源路径都不安全,

但上面的代码不起作用,我的CustomAuthenticationProvider中的身份验证方法(从AuthenticationProvider扩展的 )每次都会执行

无论在每个请求中使用permitAll,都会执行身份验证。我也尝试过anyRequest代替antMatchers:

httpSecurity.authorizeRequests().anyRequest().permitAll();

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

尝试更新您的代码,以便允许针对特定路径的请求,如下所示

protected void configure(HttpSecurity httpSecurity) throws Exception {

httpSecurity.addFilterBefore(buildJwtTokenAuthenticationProcessingFilter(),
                UsernamePasswordAuthenticationFilter.class);
        httpSecurity.authorizeRequests().antMatchers("/").permitAll().and()
            .authorizeRequests().antMatchers("/exemptedPaths/").permitAll();

httpSecurity.csrf().disable(); 
 httpSecurity.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

} 

答案 1 :(得分:2)

在您的类中重写以下方法,该方法扩展了WebSecuirtyConfigurerAdapater:

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/unsecurePage");
}