我有这个WebSecurityConfigurerAdapter配置:
@EnableWebSecurity
public class HttpSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.cors()
.and()
.authorizeRequests()
.mvcMatchers("/auth/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2ResourceServer().jwt()
;
}
}
当我向auth
提出请求时,我会得到401,直到我通过一些授权——这不适合这个内插件。
我认为这与.anyRequest().authenticated()
有关。我以前读过,这不应该影响permitAll()
——我有没有误解?
您的请求可能会被拒绝,因为您没有提供CSRF令牌。默认情况下,Spring Security为每个POST
请求启用它,并且您需要显式禁用它
@EnableWebSecurity
public class HttpSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.cors()
.and()
.csrf().disable()
.authorizeRequests()
.mvcMatchers("/auth/**").permitAll()
.anyRequest().authenticated()
.and()
.oauth2ResourceServer().jwt();
}
}
您可以将以下属性添加到application.yml
文件中,这样您就可以了解如果CSRF不是这样,您的请求被拒绝的原因:
logging:
level:
org.springframework.security: TRACE
如果你使用jwt过滤器,即使你添加了permitAll((,它也不会工作。如果你删除了过滤器,它也会工作得很好。