我有一个可以在两种身份验证方法都返回true时执行的方法。
@PreAuthorize("canExec('ROLE_A') || canExec('ROLE_B')")
public String getSomething() {
return "Something";
}
如何记录身份验证是成功还是失败,这意味着整个SpEL查询的结果是对还是错?
以下是不可能的解决方案,因为可以在同一SpEL中多次调用它,并且多个记录的结果不会反映授权的实际结果。
public boolean canExec(String role) {
boolean result = ...acutal evaluation...;
log.info("auth result for role {}: {}", role, result);
return result;
}
最佳答案
public boolean canExecOr(String roleA, String RoleB) {
boolean canA = canExec(roleA);
boolean canB = canExec(roleB);
// log...
return canA || canB;
}
@PreAuthorize("canExecComposite('ROLE_A','ROLE_B')")
??