Spring Security,复杂对象作为权威

时间:2018-05-30 15:10:45

标签: spring-security

有没有人知道如何将复杂对象用作弹簧安全权限,而不是实现自定义accessDecisionManager。我不想实现自定义accessDecisionManager,因为我需要重新实现角色选民,这与SPeL一起使用并认为这不是一个好主意。

1 个答案:

答案 0 :(得分:0)

是的,可能最简单的就是连接bean:

@Component
public class MyAuthorizer {
    boolean authorize(Authentication authentication) {
        // do your custom checking here
    }
}

然后

@Controller
public class MyController {
    @PreAuthorize("@myAuthorizer.authorize(authentication)")
    // ... request mapping, etc
}

或者,如果可以将复杂对象缩减为字符串,hasAuthority将像处理简单权限一样工作:

public class MyCustomAuthority implements GrantedAuthority {
    Object all;
    Object my;
    Object complexity;

    public String getAuthority() {
        return String.valueOf(this.complexity);
    }
}