我在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();
任何帮助都将不胜感激。
答案 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");
}