自定义 @PreAuthorize
时间: 2023-11-14 20:07:50 浏览: 147
@PreAuthorize 是 Spring Security 提供的注解,用于在方法执行前进行权限校验。如果需要自定义 @PreAuthorize,可以通过实现 AccessDecisionVoter 接口来实现。
具体步骤如下:
1. 创建一个自定义的注解,如 @MyPreAuthorize。
2. 创建一个实现 AccessDecisionVoter 接口的类,如 MyAccessDecisionVoter。
3. 在 MyAccessDecisionVoter 中实现权限校验逻辑。
4. 在 MyPreAuthorize 中指定 MyAccessDecisionVoter。
示例代码如下:
```java
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasRole('ADMIN')")
public @interface MyPreAuthorize {
Class<? extends AccessDecisionVoter<?>>[] value() default {MyAccessDecisionVoter.class};
}
public class MyAccessDecisionVoter implements AccessDecisionVoter<Object> {
@Override
public boolean supports(ConfigAttribute attribute) {
return true;
}
@Override
public boolean supports(Class<?> clazz) {
return true;
}
@Override
public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) {
// 权限校验逻辑
return ACCESS_GRANTED;
}
}
```
阅读全文