【发布时间】:2021-01-28 18:48:47
【问题描述】:
我的 Spring Boot 应用程序提供了几个端点。在this article 之后,我想默认限制所有端点,以便它们需要通过 JWT 令牌进行身份验证。只有某些路径是公开的。我的理解是.antMatchers(PUBLIC_RESOURCES).permitAll() 中定义的所有路径都将是“公共”的,无需任何身份验证。
这适用于 GET 方法,但是当使用 POST 访问相同的端点时,我得到一个 HTTP 403(禁止)。我不明白这是为什么。
这是我当前的安全配置:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private static final String[] PUBLIC_RESOURCES = {
"/",
"/user/login"
};
@Override
protected void configure(final HttpSecurity httpSecurity) throws Exception {
httpSecurity
.antMatcher("/**").authorizeRequests()
.antMatchers(PUBLIC_RESOURCES).permitAll()
.anyRequest().authenticated();
}
}
还有控制器:
@RestController
@RequestMapping(path = "user")
public class LoginController {
@GetMapping
public String get() {
return "Hey, Joe (get)";
}
@PostMapping
public String post() {
return "Hey, Joe (post)";
}
}
【问题讨论】:
标签: spring-boot spring-security