1、为什么 shiro 有了《角色》后,还要设置《角色权限》呢?(问题)

思考:设置好角色了,那么就代表什么操作都可以执行了吗?
理解:如果上边回答是的话,那么只是《角色》层次的控制。
举例:如果你是个老师,那么你就可以教学生数学课,但是现实呢,是个老师就能教数学课吗?体育老师、美术老师...路过;所以:角色权限就是用来指定这个角色可以做哪些操作。换句话说角色就是某些权限的集合。比如学校里面校长,老师,学生,等角色,但是他们都有不同的职业,这就是权限。如果只有角色没有权限,那角色就没有意义了。

值的一提的是,《角色》 跟 《角色权限》 都是用来控制用户访问权限的,如果项目中只是需要用到 《角色》来限制用户访问,
那么,角色权限就没什么用了,所以,《角色权限》更像是《角色》更加细化后的操作,比如上边学校老师、校长、学生那个例子;

2、代码小例子

   /*** 权限认证*/  @Override  protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {  //1、获取登录时输入的用户名  String loginName=(String) principalCollection.fromRealm(getName()).iterator().next();  //2、到数据库查是否有此对象  User user=userService.findByName(loginName);  if(user!=null){  //2.1、权限信息对象info,用来存放查出的用户的所有的角色(role)及权限(permission)  SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();  //2.2、用户的角色集合
            info.addRoles(user.getRolesName());  //2.3、用户的角色对应的所有权限,如果只使用角色定义访问权限,下面的四行可以不要  List<Role> roleList=user.getRoleList();  for (Role role : roleList) {  info.addStringPermissions(role.getPermissionsName());  }  return info;  }  return null;  }  

 上边代码截取的自定义 AuthorizingRealm 中 doGetAuthenticationInfo 方法;
 
    结合上方代码,举两个例子。
 
    一、角色控制
 
           场景:只允许(admin)登录角色显示
    jsp 代码<shiro:hasRole name="manager">manager角色登录显示此内容</shiro:hasRole>  <shiro:hasRole name="admin">admin角色登录显示此内容</shiro:hasRole>

代码:上边 2.2 步骤,用户角色设置中,如果给该用户 “admin”权限,那么在 jsp 中就能显示出第一条来。
   info.addRoles("admin");  

二、权限控制
 
            场景:只允许拥有 (add)权限的用户显示
   jsp 代码<shiro:hasPermission name="add">add权限用户显示此内容</shiro:hasPermission>  <shiro:hasPermission name="edit">edit权限用户显示此内容</shiro:hasPermission>  

代码:上边 2.3 步骤,用户角色权限设置中,如果给该用户角色设置 “add”权限,那么在 jsp 中就能显示出第一条来。
    info.addStringPermissions("add"); 

3、补充

  关于 shiro 《角色》与《权限》相信你大概有一点概念了,下一篇会总结一下关于 shiro 常用注解,以及注解使用场景。

博客地址:http://www.cnblogs.com/niceyoo

shiro 角色与权限的解读相关推荐

  1. Shiro角色和权限管理

    Shiro角色和权限管理 在resources下创建shiro.ini文件,用于存储数据,也可以将数据存于数据库,这里我采用shiro.ini文件,内容如下: [users] zhangsan=z3, ...

  2. (2)shiro角色资源权限

    一般在web系统权限设计中,一般分为三个维度,用户,角色,资源,一个用户可以拥有多个角色,比如说可以是老师,也可以是班主任,一个角色也可以拥有多个资源. 比如老师同时拥有查看班级学生和批改作业的资源, ...

  3. 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统

    一.前言 在大型的信息管理系统中,经常涉及到权限管理系统 下面来个 demo,很多复杂的系统的设计都来自它 代码已经放到github上了,地址:https://github.com/larger5/s ...

  4. spring boot shiro redis整合基于角色和权限的安全管理-Java编程

    一.概述 本博客主要讲解spring boot整合Apache的shiro框架,实现基于角色的安全访问控制或者基于权限的访问安全控制,其中还使用到分布式缓存redis进行用户认证信息的缓存,减少数据库 ...

  5. Shiro基础应用——角色和权限校验

    一.Shiro 为什么要用shiro: 1.项目中的密码是否可以明文存储? 2.是否任意访客,无论是否登录都可以访问任何功能? 3.项目中的各种功能操作,是否是所有用户都可以随意使用? 综上,当项目中 ...

  6. SpringBoot 整合 Shiro 实现动态权限加载更新+ Session 共享 + 单点登录

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源: juejin.im/post/5d087d60518825 ...

  7. vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证

    有很多文章提到,在生产环境中需要关闭Swagger功能,防止系统资源泄露.今天,我结合自己开发过程中的经验,分享一个只需几行代码便可实现让Apache Shiro接管Swagger认证和授权的方法.如 ...

  8. Spring Security基于角色的权限管理

    1.Spring Security 1.1核心领域概念 认证(Authentication):认证是建立主体(principal)的过程. 主体通常是指在应用程序中执行操作的用户.设备或其他系统 授权 ...

  9. 基于角色的权限控制模型RBAC

    本文来说下基于角色的权限控制模型RBAC 文章目录 概述 RBAC权限模型简介 RBAC的演化进程 用户与权限直接关联 一个用户拥有一个角色 一个用户一个或多个角色 页面访问权限与操作权限 数据权限 ...

最新文章

  1. 4.1.6 文件的基本操作
  2. htmlcss基础知识点表单
  3. Hbase总结(八)Hbase中的Coprocessor
  4. SAP Fiori问题排查:Why expand does not work for complex note
  5. python next day_PYTHON养成日记 DAY-13
  6. github(5):GitHub的注册与使用(详细图解)
  7. menuconfig和Kconfig、.config的关系
  8. Jmeter之Synchronizing Timer(同步集合点)
  9. javascript 容错处理代码【屏蔽js错误】
  10. Vegas安装出现问题怎么办?
  11. 面试还不知道BeanFactory和ApplicationContext的区别?
  12. hdu 5055 Bob and math problem
  13. git日志 每天导出 shell脚本
  14. 域名DNS解析找到ip
  15. 计算机质量监督检验报告,质量监督检验(检测)报告自动生成管理系统软件
  16. 流落在帝都的那些80后北漂IT人,你们的未来在哪儿
  17. 【Laravel系列4.3】模型Eloquent ORM的使用(一)
  18. 李沐动手学深度学习v2-目标检测中的锚框和代码实现
  19. 介绍几个好用的小软件
  20. Interface Trip Stop - SRS 报错

热门文章

  1. [html] 如何在IOS下启用WebApp全屏模式?
  2. [css] 如何取消页面中选中的文字?
  3. 前端学习(2578):Nuxt的核心原理
  4. “约见”面试官系列之常见面试题之第五十五篇之清除浮动的方法(建议收藏)
  5. 前端学习(1878)vue之电商管理系统电商系统之左侧菜单布局
  6. plsql轻量版游标的使用2
  7. oracle之数据处理
  8. Oracle从小白到大牛的刷题之路(建议收藏学习)
  9. 前端学习(1542):cdn简介
  10. 前端学习(503):水平居中布局得第三种方式的优缺点