0

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

1 回答 1

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

??

于 2019-06-17T18:35:11.470 回答