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