如何替代弃用的`authorizeRequests()`函数?
时间: 2024-09-12 16:05:41 浏览: 47
`authorizeRequests()`是一个过时的方法,在某些版本的Spring Security中已经废弃。如果你正在使用较新的Spring Security配置,推荐替换为更现代的`WebSecurityConfigurerAdapter`或`@Configuration`注解的方式。
1. **使用`WebSecurityConfigurerAdapter`**:在你的配置类上添加`@EnableWebSecurity`注解,并覆盖`configure(HttpSecurity http)`方法,这里你可以自定义授权规则:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/resources/**").permitAll() // 访问资源目录
.anyRequest().authenticated(); // 其他路径需要认证
}
}
```
2. **基于注解的配置**:利用`@PreAuthorize`、`@Secured`等注解直接在控制器方法上指定权限,例如:
```java
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/public")
public String publicEndpoint() {
return "Public endpoint";
}
@GetMapping("/private")
@PreAuthorize("isAuthenticated()")
public String privateEndpoint() {
return "Private endpoint";
}
}
```
在这个例子中,`privateEndpoint`只有已登录用户才能访问。
阅读全文