shiro讲解之 多Realm 之 Authorization
来源:互联网 发布:linux 打开vim编辑器 编辑:程序博客网 时间:2024/05/17 15:19
shiro讲解之 多Realm 之 Authorization
在本节之前我们学习了Shiro 的 多Realm 和 Authorization,现在我们将学习一下Shiro 的多 Realm Authorization。
实例
多 Realm 的配置(参考 shiro讲解之 多Realm 之 Authentication)
Realms
这里我们定义两个 Realm 分别为 shiroRealm 和 myRealm, 此处我们将不在贴出多 Realm 认证部分的代码了,我们至贴出 授权部分的代码。shiroRealm
@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { Object principal = principals.getPrimaryPrincipal(); Set<String> roles = new HashSet<>(); roles.add("admin"); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles); return info;}
myRealm
@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { Object principal = principals.getPrimaryPrincipal(); Set<String> roles = new HashSet<>(); roles.add("user"); SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles); return info;}
在角色的设定上我们将登录的 Subject 同时赋予了 admin 和 user 角色。
资源设置(Shiro Filter)
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login/toLogin" /> <property name="successUrl" value="/example/index" /> <property name="unauthorizedUrl" value="/example/unauthorized" /> <property name="filterChainDefinitions"> <value> /login/toLogin = anon /login/loginVal = anon /login/logout = logout /example/admin =roles[admin] /example/user = roles[user] /** = authc </value> </property></bean>
在资源的设定上,我们将 /example/admin 和 /example/user 两个资源分别交由 admin和 user 权限,即只有同时拥有 admin 和 user 角色时以上两个资源都能被访问。
结果
.
小结
多 Realm 的 Authorization 与多 Realm 的 Authentication 不同,Authorization 没有认证策略的选择。
使用多 Realm Authorization 时Subject 被赋予的角色属性是可以叠加的即一个Realm 将 Subjct 角色赋为 admin 另一个赋为 user ,那么该 Subject 最终两拥有两个角色:admin 和 user。进而以上两个的资源 Subject 也将同时享有。
所以在做多Realm 的 Authorization 尤其注意角色的赋予和权限边界的限定。
Authorization 方法的触发在 Subject 访问某资源时发生,同时若使用了Shiro 的缓存功能的话 Subject的角色属性将会被写入缓存。当再次访问资源时,Shiro 将优先从缓存中获取当前 Subject 的角色属性。(Shiro 的缓存我们将在后面的章节中学)
- shiro讲解之 多Realm 之 Authorization
- shiro讲解之 Realm
- shiro讲解之 多Realm 之 Authentication
- shiro讲解 之 Authorization (一)
- shiro讲解 之 Authorization (二)
- shiro讲解 之 Authorization (三)
- shiro讲解 之 Authentication-Authorization小结
- shiro之Authorization的概述
- Shiro教程之jdbc realm
- 【Shiro】Apache Shiro架构之自定义realm
- 【Shiro】Apache Shiro架构之自定义realm
- 【Shiro】Apache Shiro架构之自定义realm
- shiro讲解之 Shiro Filter
- Apache shiro 笔记整理之自定义Realm
- 我的shiro之旅-realm
- Shiro使用之自定义realm的编写
- Shiro-学习总结-认证之自定义realm
- shiro源码分析之Realm调用过程
- java实现图片等文件类型的本地复制
- spark 调优及运行原理
- linux安装redis4.0
- StrutsPrepareAndExecuteFilter的作用 Struts
- JS取随机数
- shiro讲解之 多Realm 之 Authorization
- cad文件怎么转为dxf格式?
- 几种css属性兼容性写法
- Android Studio 3.0更新项目报错处理方案
- jQuery语法
- PHP生成加减算法方式的验证码
- 使用@property 改变get和set
- Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义
- 15.1 报文与实体