【发布时间】:2022-10-19 22:51:40
【问题描述】:
我想将SecurityExpressionRoot 类(我可以在@PreAuthorise() 注释内访问)传递给我的自定义checkAccess() 方法,该方法检查对特定方法的访问,使用一些基于权限、角色和我传递给它的附加变量的逻辑方法。
例如,在@PreAuthorise() 内部,我可以访问来自SecurityExpressionRoot 的方法。 hasAuthority()
有没有办法做到这一点?
控制器:
public class TestController {
private final PreAuthorizeChecker preAuthorizeChecker;
@Autowired
public TestController(PreAuthorizeChecker preAuthorizeChecker) {
this.preAuthorizeChecker = preAuthorizeChecker;
}
@GetMapping(path = "/test")
@PreAuthorize("@preAuthorizeChecker.checkAccess(/*SecurityExpressionRoot.getSomehow()*/)") //How to obtain SecurityExpressionRoot instance?
public ResponseEntity<Void> get() {
return;
}
PreAuthorizeChecker:
@Component
public class PreAuthorizeChecker {
@Autowired
public PreAuthorizeChecker() {
}
public boolean checkAccess(SecurityExpressionRoot securityExpressionRoot) {
//do sth with securityExpressionRoot
return true;
}
}
【问题讨论】:
标签: java spring spring-security