我想在我的应用程序中添加一些端点上的Spring Security。
@RestController
@RequestMapping("/test")
@RequiredArgsConstructor
public class TestController {
@PostMapping
public ResponseEntity post() {
...
}
@GetMapping
public ResponseEntity get() {
...
}
在Web安全安全适配器中,我知道如何保护Endpoit。我做到了:
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class MyWebSecurityConfig extends WebSecurityConfigurerAdapter {
private final MyUserDetailsService myUserDetailsService;
@Override
public void configure(HttpSecurity http) throws Exception {
http.httpBasic().and()
.cors().and().csrf().disable()
.authorizeRequests()
.antMatchers("/users", "/users/**").permitAll()
.anyRequest().authenticated()
;
}
在端点“/test”中,我想在@Postmap中添加安全性,只有经过身份验证的用户才能发布内容。@Getmap将向所有人开放。
编辑所以我更新了我的MyWebSecurityConfig:
@Override
public void configure(HttpSecurity http) throws Exception {
http.httpBasic().and()
.cors().and().csrf().disable()
.authorizeRequests()
.antMatchers("/users", "/users/**").permitAll()
.antMatchers(HttpMethod.GET, "/shapes").permitAll()
.antMatchers(HttpMethod.GET, "/shapes/history").permitAll()
.anyRequest().authenticated()
;
}
但如果没有身份验证,我仍然无法发送Get On“/Shares”endpoit。我仍然收到401未经授权的电话。我应该换些什么?
1条答案
按热度按时间3bygqnnd1#
antMatchers()
有一个覆盖版本,允许您配置将HTTP方法和路径匹配在一起: