@PreAuthorize 多个权限控制
时间: 2023-08-19 20:09:42 浏览: 1594
在 Spring Security 中,可以使用 `@PreAuthorize` 注解来实现多个权限控制。你可以在方法级别或者类级别使用该注解。
在方法级别使用 `@PreAuthorize` 注解时,你可以使用 SpEL 表达式来定义多个权限,例如:
```java
@PreAuthorize("hasAnyAuthority('ROLE_ADMIN', 'ROLE_USER')")
public void someMethod() {
// 方法体
}
```
上述例子中,`someMethod()` 方法要求用户具有 "ROLE_ADMIN" 或者 "ROLE_USER" 任意一种权限才能访问。
在类级别使用 `@PreAuthorize` 注解时,你可以将多个权限定义在类级别上,并在方法级别上继续添加额外的权限要求,例如:
```java
@Controller
@PreAuthorize("hasRole('ROLE_ADMIN')")
public class MyController {
@GetMapping("/admin")
@PreAuthorize("hasAnyAuthority('WRITE', 'DELETE')")
public void adminMethod() {
// 方法体
}
}
```
上述例子中,`MyController` 类要求用户具有 "ROLE_ADMIN" 权限才能访问类中的任何方法,而 `adminMethod()` 方法则要求用户除了具有 "ROLE_ADMIN" 权限外,还需要具有 "WRITE" 或者 "DELETE" 权限才能访问。
你可以根据自己的需求来定义多个权限控制规则,并使用 `@PreAuthorize` 注解来实现。
阅读全文