我是Spring Boot的新手,正在尝试找出将白名单 终点。我已经启用了Spring Security。
我有一个带有端点Hello的控制器类,该类应返回“ hello” 作为响应,希望任何人都可以在不需要身份验证的情况下访问此端点。
@RestController
@RequestMapping(value = {"/employee"})
public class EmployeeController {
@Autowired
EmployeeRepository empRepose;
@Autowired
EmployeeService empService;
@Autowired
private Utility utility;
@PreAuthorize("permitAll()")
@GetMapping(value = "/hello", produces = MediaType.APPLICATION_JSON_VALUE)
public String home() {
return "Hello Employee!";
}
}
Spring Security配置:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
public class ApplicationBasicAuth extends WebSecurityConfigurerAdapter {
@Autowired
RegisterUser beanRegisteruser;
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
/* httpSecurity.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().httpBasic();*/
/*httpSecurity
.httpBasic()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/employee/**").permitAll()
.and()
.csrf().disable();*/
httpSecurity.csrf().disable();
httpSecurity.authorizeRequests().anyRequest().permitAll();
}
我尝试了很多方法将所有不需要进行身份验证的端点甚至1个端点列入白名单。
请帮助我在这里找出我做错了什么。
答案 0 :(得分:0)
您可以使用configure(WebSecurity web)
和/或configure(HttpSecurity http)
来实现,如果同时使用它们,请注意,您必须将configure(WebSecurity web)
保持在configure(HttpSecurity http)
以上。您可能会看到更多详细信息here
configure(WebSecurity web)
WebSecurity ignoring()
方法的一般用法省略 Spring Security,Spring Security的任何功能均不可用。
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/hello")
}
configure(HttpSecurity http)
您还可以将configure(HttpSecurity http)
与.permitAll()
一起使用,如下所示
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/hello").permitAll()
.anyRequest().authenticated();
}