Spring预授权SpEL查询的日志结果?

时间:2019-06-17 17:53:02

标签: java spring spring-el pre-authentication

我有一个可以在两种身份验证方法都返回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;
}

1 个答案:

答案 0 :(得分:0)

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')")

??