文章目录
目录
2.6.1 授权的概念和安全表达式的应用
2.6.1.1 授权 - Authorization
- AccessDecisionManager
- 根据相关信息,做出授权决定
- decide 方法的安全对象是一个Object,这就说明这个对象可以把任何和授权有关的信息放进去,比如是 Methodlnvocation,就可以通过检查方法的参数来决定实现某种安全逻辑。
- 基于投票的 AccessDecisionManager 实现
- AccessDecisionManager 对一组 AccessDecisionVoter 实现进行轮询授权决定,然后,AccessDecisionManager 根据对投票的评估,决定是否抛出一个 AccessDeniedException
- 三种投票策略
- ConsensusBased: 以得到多数票作为决定依据
- AffirmativeBased:有一票以上的可以通过
- UnanimousBased:需要全票才能通过
- RoleVoter
- 如果任何 ConfigAttribute 前缀 ROLE_ 开头,它将进行投票
- 如果有一个 GrantedAuthority 返回的字符串表示正好等于一个或多个以 ROLE_ 开发的 ConfigAttributes,它将投票授予访问权限
- 如果没有任何以 ROLE_ 开头的 ConfigAttribute 完全匹配,RoleVoter 将投票拒绝访问
- 如果没有以 ROLE_ 开头的 ConfigAttrib