我正在使用Spring Boot 2.1.4.RELEASE并试图找出401未经授权的错误。
下面是我的webconfig类
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/somepath/")
}
@Override
protected void configure(HttpSecurity http) throws Exception {
if(securityEnabled) {
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.anyRequest().authenticated()
.antMatchers("/somepath/").permitAll()
.and()
.httpBasic()
.and()
.anonymous().disable()
.exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
}
在我的主班上,我已经排除了-
@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class})
现在,当我尝试使用http://localhost:8080/somepath
测试api时,我将获得401未经授权。但是,当我尝试使用令牌使用相同的端点时,它将起作用,这意味着尚未成功禁用身份验证。我会在这里为您提供帮助。
答案 0 :(得分:1)
然后,您正在使用pattern(“ / somepath /”)过滤请求,该请求与第一条语句满足无关。
.anyRequest().authenticated()
.antMatchers("/somepath/").permitAll()
删除以下语句。使用allowAll时,它意味着每个经过身份验证的用户,但是您禁用了匿名访问,因此将无法使用。
.anonymous().disable()
因此,使用下面的配置功能以重新排列顺序可以解决此问题。
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/somepath/")
}
@Override
protected void configure(HttpSecurity http) throws Exception {
if(securityEnabled) {
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/somepath/").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic()
.exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
}