一、简单介绍一下Shiro框架

Apache Shiro是java的一个安全框架。使用shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。

三个核心组件:Subject、SecurityManager、Realms

Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程,后台账户(Deamon Accout)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的用户概念。

Subjuect代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

Realm:Realm充当了Shiro与引用安全数据间的“桥梁”或者“连接器”。也就是说,当用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户机器权限信息。

二、Shiro主要的四个组件

1、SecurityManager:典型的Facade,Shiro通过他对外提供安全管理的各种服务

2、Authernticator:对“who are you”进行核实。通常涉及用户名和密码。这个组件负责收集principals和credentials,并将它们提交给应用系统。如果提交的credentials跟应用系统中提供的credentials温和,就能够继续访问,否则需要重新提交principals和credentials,或者直接终止访问。

3、Authorizer:身份验证通过后,由这个组件对登录人员进行访问控制的筛选,比如“who can do what”或者“who can do which actions”。Shiro采用基于Realm的方法,即用户(Subject)、用户组、角色和permission的聚合体。

4、Session Manager:这个组件保证了异构客户端的访问,配置简单。它是基于POJO/J2SE的,不跟任何的客户端或者协议绑定。

三、Shiro的运行原理

  1. Application Code:应用程序代码,就是我们自己的编码,如果在程序中需要进行权限控制,需要调用Subject的API。

  2. Subject主体:代表的当前用户。所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager,可以将Subject当成一个门面,而真正的执行者是Securitymanager。

  3. SecurityManager:安全管理器,所有与安全有关的操作都会与SecurityManager交互,并且它管理所有的Subject。

  4. Realm:Shiro是从Realm来获取安全数据(用户、角色、权限)。就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以吧Realm看成DataSource,即安全数据源。

四、Shiro的四重权限控制方式

  1. url级别权限控制

  2. 方法注解权限控制

  3. 代码级别权限控制

  4. 页面标签权限控制

五、授权实现的流程

1、什么是粗颗粒和细颗粒权限?

对资源类型的管理称为粗颗粒度权限控制,即只控制到菜单、按钮、方法,粗粒度的例子比如:用户具有用户管理的权限,具有导出订单明细的权限。对资源实例的控制称为细颗粒度权限管理,即控制都数据级别的权限,比如:用户只允许修改本部门的员工信息,用户只允许到处自己创建的订单明细。

总结:

  1. 粗颗粒权限:针对url连接的控制

  2. 细颗粒权限:针对数据级别的控制

2、粗颗粒和细颗粒如何授权?

对于粗颗粒度的授权可以很容易做系统架构级别的功能,即系统功能操作使用的统一的粗颗粒度的权限管理。

对于细颗粒度的授权不建议做成系统架构级别的狗能,因为对数据级别的控制是系统的业务需求,随着业务需求的变更,业务功能变化的可能性最大建议对数据级别的权限控制在业务层个性化开发。

  1. 粗颗粒权限:可以使用过滤器统一拦截url

  2. 细颗粒权限:在service中控制,在程序级别来控制,个性化编程。

【JAVA面试题整理】框架之Shiro相关推荐

  1. 尚学堂Java面试题整理

    博客分类: 经典分享 1. super()与this()的区别? - 6 -  2. 作用域public,protected,private,以及不写时的区别? - 6 -  3. 编程输出如下图形. ...

  2. Java面试题整理_P1

    Java面试题整理 1.Java基础 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境.JR ...

  3. 2023 java面试题整理

    java面试题整理二 1.RocketMQ消息可靠性怎么保证? To:消息丢失可能发生在生产者发送消息.MQ本身丢失消息.消费者丢失消息三个方面 生产者丢失: 可能发生在程序发送异常了没有重试处理.或 ...

  4. Java面试题整理(转)

    Java面试题整理 计算机网络 1.停止等待协议 停止等待协议是最基本的数据链路层协议,它的工作原理是这样的. 在发送端,每发送完一帧就停止发送,等待接收端的确认,如果收到确认就发送下一帧. 在接收端 ...

  5. 【JAVA面试】java面试题整理(4)

    版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/83473779 java面试题整理(4) JAVA常考点4 文件夹 1. S ...

  6. 2017年杭州java面试题_2017年Java面试题整理

    原标题:2017年Java面试题整理 面试是我们每个人都要经历的事情,大部分人且不止一次,这里给大家总结最新的2016年面试题,让大家在找工作时候能够事半功倍. 1.Switch能否用string做参 ...

  7. 100道中高级Java面试题整理

    JavaEE面试题整理 一.Java基础篇 二.JVM篇 三.Tomcat篇 四.MyBatis篇 五.Spring篇 六.SpringMVC面试题整理 七.Redis篇 八.Mongodb篇 九.M ...

  8. 2020-09-15 JAVA面试题整理

    文章目录 一.Java基础系列面试题 二 Java 面试题(二) 四.Redis面试题 四.Redis面试题 七.Spring Boot 面试题 九.微服务 面试题 十一.RabbitMQ 面试题 十 ...

  9. Java面试题整理(带答案)

    这是我自己整理的Java面试题以及答案.题目来源是https://blog.csdn.net/sufu1065/article/details/88051083 我删除了自己不使用的框架技术栈,像Hi ...

  10. 金九银十,史上最强 Java 面试题整理。

    以下会重新整理所有 Java 系列面试题答案.及各大互联网公司的面试经验,会从以下几个方面汇总,本文会长期更新. Java 面试篇 史上最全 Java 面试题,带全部答案 史上最全 69 道 Spri ...

最新文章

  1. http://nlp.stanford.edu:8080/parser/index.jsp
  2. 分支管理---解决冲突
  3. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】
  4. leetcode 1489. 找到最小生成树里的关键边和伪关键边(并查集)
  5. python字符串解析_Python-字符串解析-正则-re
  6. hdu 4430 Yukari's Birthday(二分)
  7. bzoj 1096 斜率优化DP
  8. Cannot find class [xxx] for bean with name ‘‘ defined in class
  9. WinSCP无法连接linux,而secureCRT却可以
  10. 【BZOJ】3238: [Ahoi2013]差异
  11. gif透明背景动画_ppt模板3D卡通GIF动画PPT素材,多种多样的日常动作
  12. linux下文件管理方式iscsi-ipsan
  13. 【数据结构】图的存储结构—邻接矩阵
  14. 含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如{321,3,32},最小的数为321323...
  15. bh1750采集流程图_基于BH1750光照强度数据采集系统的设计
  16. 微信公众号开发之使用eclipse创建微信web工程并发布到BAE测试
  17. 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。
  18. Windows上使用ionic开发IOS程序
  19. 电脑文件夹备份到百度网盘,可以实现自动备份
  20. 从零开始-Exchange和Skype for Business 部署-Exchange 安装

热门文章

  1. 【排序】直接选择排序
  2. 计算机网络第五版思维导图大全集
  3. Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机
  4. Sap Hana触发器
  5. XML语言学习2---方立勋教程DTD
  6. ★C语言期末课程设计★——教师工资管理系统(详细报告+源代码+详细注释)
  7. 省二级计算机考试VB题库,2015河南省全国计算机等级考试二级笔试试卷VB考试题库...
  8. 开源阅读书源_【阅读】一款开源的强大的看书软件!amp;超多书源。
  9. linux救黑砖手机,手机黑砖9006/9008救砖教程 通用救砖模式详细流程
  10. SOME/IP报文格式-Payload