Apache Shiro教程(4)
创始人
2024-05-09 04:14:12
0

shiro授权

  1. 授权

授权,即访问控制,控制谁能访问哪些资源,主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的。

  1. 关键对象

授权可简单理解为 who 对 what 进行how操作

  1. 授权流程
    20220903184936.png

授权方式

基于角色的访问控制 : RBAC基于角色的访问控制是以角色为中心进行控制
基于资源的访问控制 : RABC基于资源的访问控制是以资源为中心进行访问控制

  1. 权限字符串

权限字符串的规则: 资源标识符: 操作:资源实例标识符,意思是对哪些资源的那个实例有哪些具体的操作,“:” 是资源/操作/实例的分割符,权限字符串也可以使用* 通配副。

1、用户创建权限: user:create,或者user:create:*
2、用户修改实例001的权限:user:update:001
3、用户实例001的所有权限:user:*:001

  1. shiro中授权编码实现方式

1、角色

 if(subjcet.hasRole("admin")){}

2、资源

  if(subject.isPermission("user:create:001")){// 具体实例}if(subject.isPermission("user:create:*")){// 资源类型}
  1. 实现

1、编程

 if (subjcet.hasRole("admin")){}

2、注解

@RequestRoles("admin")
public void realmHello(){
}@RequiresRoles("admin")@RequiresPermissions("user:create:001")@RequestMapping("/user/test")public String userTest(){return "user/test";}

3、标签式


上述标签为jsp类型的实现,如果想用threamleaf thmeleaf的集成需要额外的部分
  1. 具体实现

TestAuthorizingRealmMd5中添加 如下代码:

       // 2、封装自定义 realmAuthorizingRealmMd5Customer authorizingRealmMd5Customer = new AuthorizingRealmMd5Customer();// 2.1、设置md5加密匹配器HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();credentialsMatcher.setHashAlgorithmName("md5");// 2.1、设置 散列次数credentialsMatcher.setHashIterations(12);authorizingRealmMd5Customer.setCredentialsMatcher(credentialsMatcher);// =================================================================// 添加授权的功能if (subject.isAuthenticated()){//基于角色的开发if(subject.hasRole("admin")){System.out.println(subject.hasRole("admin"));}//基于资源的开发if (subject.isPermitted("user:create:001")){System.out.println("subject:=:"+subject.isPermitted("user:*:*"));System.out.println("subject:=:"+subject.isPermitted("user:create:001"));;}}

20220903211814.png

AuthorizingRealmMd5Customer 添加代码

        @Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {Object primaryPrincipal = principalCollection.getPrimaryPrincipal();//根据用户名priaryPrincipal 查询数据库 查询相关的角色及资源信息SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();simpleAuthorizationInfo.addRole("admin");simpleAuthorizationInfo.addRole("user");simpleAuthorizationInfo.addStringPermission("user:create:001");return simpleAuthorizationInfo;}
  1. 运行结果
subject:=:false
21:21:17.911 [main] DEBUG org.apache.shiro.realm.AuthorizingRealm - No authorizationCache instance set.  Checking for a cacheManager...
21:21:17.911 [main] DEBUG org.apache.shiro.realm.AuthorizingRealm - No cache or cacheManager properties have been set.  Authorization cache cannot be obtained.
subject:=:true

相关内容

热门资讯

赛事火热、“南客北上”、长期参...   央视网消息:近日,随着第十二届全国大众冰雪季的全面启动以及寒假的陆续到来,各主要冰雪运动目的地客...
遥远星系里“小红点”神秘天体是...   中新网北京1月17日电 (记者 孙自法)国际知名学术期刊《自然》最新发表一篇天文学论文称,研究人...
美舰船过航台湾海峡 东部战区全...   东部战区新闻发言人就美“菲恩”号导弹驱逐舰、“西尔斯”号海洋测量船过航台湾海峡发表谈话  东部战...
全球首次!中国10万亿用电量背...   超过10万亿千瓦时的用电量这一数字在全球单一国家中尚属首次。  全社会用电量年度成绩单出炉。  ...
优良天数率超90% 绘就长江黄...   编者按:2026年是“十五五”开局之年。内需市场潜力持续释放,消费新场景不断涌现,文旅融合、冰雪...
视频丨“一半冰湖、一半沙海” ...   入冬以来,新疆冰雪旅游热潮持续升温,各大雪场迎来客流高峰。新疆巴州博湖县依托得天独厚的沙漠与湖泊...
马杜罗之子建议向国际组织寻求支...   新华社加拉加斯1月16日电 在16日举行的委内瑞拉法学家会议上,委内瑞拉总统马杜罗之子尼古拉斯·...
(经济观察)破万亿美元后再蓄新...   中新社南宁1月17日电 (记者 蒋雪林)中国海关总署近日公布的数据显示,2025年中国对东盟进出...
人民论坛网评 | “老字号”焕...   元旦假期,哈尔滨中华巴洛克历史文化保护街区累计接待游客19.8万人。百年老字号“张包铺”门前排起...
国宝画重点|不断刷新认知的“海...   汉代文明  上接先秦文脉之深厚  下启后世华章之滥觞  在历史坐标系中  占据着独一无二的地位 ...