Shiro介绍及解析
一、明白什么是认证和授权
从百度百科上理解的,感觉非常通俗易懂
你要登机,你需要出示你的 passport 和源 ticket,passport 是为了证明你张三确实是你百张三,这就是 认证;而机票是为了证明你张三确实买度了票可以上飞机,这就是 授权。
二、shiro的概念
1.什么是shiro
2.shiro的特性
3.shiro的核心组件
三、shiro实战debug解析(token是用户输入的,info是从缓存和数据库中查出来的,
认证主要做token和info中密码的判等;授权主要是将注解上的权限或者角色与从数据库中查出来的权限做判等)
1.首先先配置一个Realm类
1.1 然后配置认证的方法,因为配置了拦截路径,所以当用户调用sub.login(token)的方法的时候
会先去AuthenticatingRealm类中调用getAuthenticationInfo方法,如下图所示
之后开始回调实现类也就是咱自己实现的doGetAuthenticationInfo这个方法,方法的逻辑大致是获取用户输入框中输入的token中的principal,然后根据principal去数据库或者缓存中查相应的用户的信息。之后将token中的principal以及数据库中查询到的password还有自己实现的AuthRealm类的全路径传入到authenticationInfo对象中去,如下图所示
构造完之后返回info对象,接着走下边的assertCredentialsMath方法(),如下图所示
assertCredentialsMath方法()里边会针对token(用户输入的要验证的“用户”)以及info(从数据库里边查的实际的“用户”)里边的密码进行校验,如果对比成功则返回true
1.2 然后配置授权的方法,也就是说当调用到具体方法的时候会去回调这个方法
2.然后配置ShiroConfig类
2.1首先配置SecurityManager类,一般都是这几行代码,其中的入参就是第一步配的那个AuthRealm
2.2然后配置shiro的过滤规则,其中入参就是上一步配置的SecurityManager。里边分别都是登录路径(如果不设置默认会自动寻找Web工程根目录下的"/login"页面),认证成功后的路径以及没有认证的路径
2.3 配置Filter的权限控制规则
3.之后配置/login的登陆的认证,划红线的都是重点,里边首先生成一个Subject对象,然后生成touken,并且利用这个token传入到sub.login方法中,这个方法会将token传到SecurityManager,SecurityManager然后传给AuthRealm的认证方法doGetAuthenticationInfo,之后这个方法里边开始校验账号和密码的逻辑,并且利用XXXMatcher方法校验。
4.校验通过后,可以成功登录到success页面,形成一个闭环
5.用户开始进行相关操作,比如进行查询操作,上边的有注解@RequiresRoles和@RequiresPermissions,分别用来控制角色和权限,粒度不一样
6.之后会回调AuthRealm的doGetAuthorizationInfo方法,进行校验,形成一个闭环。
Shiro介绍及解析相关推荐
- xml介绍与解析,及xml库包使用
欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 xml介绍与解析,及xml库包使用 文章目录: 1 XML简单介绍 1.1 XML简单介绍 1.2 XML语法结构 2 ...
- shiro教程(2)- shiro介绍
shiro教程系列 shiro教程(3)-shiro授权 1 shiro介绍 1.1 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身 ...
- Shiro介绍及主要流程
Shiro介绍及主要流程 什么是Shiro Apache Shiro是一个强大且灵活的开源安全框架,易于使用且好理解,撇开了搭建安全框架时的复杂性. Shiro可以帮助我们做以下几件事: 认证使用者的 ...
- 输入2个正整数lower和upper(lower_题库 | 华为研发工程师编程题型介绍及解析 第 2 期...
题目1:给定两个已经升序排序好的的序列 A={a1,a2,a3,-an} 和 B={b1,b2,b3-bn} ,一个数 R,找出满足以下条件的的(ai,bj)序列对. 1.ai<=bj 2.bj ...
- python数据结构与算法分析 第2版_题库 | 百度数据结构 / 算法面试题型介绍及解析 第 2 期...
题目1:分解成质因数 (如 435234=251*17*17*3*2) void prim(int m, int n){ if(m>n){ while(m%n != 0) n++; m /= n ...
- shiro介绍(一)
一.shiro介绍 1.什么是shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.作为一款安全框架Shiro的设计相当巧妙.Shiro的应用不依 ...
- IEEE754数据格式介绍和解析方式(超权威)
一.定义:什么是IEEE754 浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容. IEEE754标准中规定float单精度浮点数在机器中表示用 1 ...
- Modbus协议介绍及解析
Modbus协议介绍及解析 1.Modbus简介 Modbus是一种广泛应用于工业控制领域串行通信协议,以其开放性.高可靠性.高效简单性.免费等优点,成为了工业领域通信协议的业界标准,是工业现场电子设 ...
- Apache shiro介绍
原文链接Application Security With Apache Shiro(翻译) 前面自己自己配合谷歌翻译,后面大部分谷歌翻译. 当你尝试保护你的程序时候你会被困扰吗?你会觉得现有的jav ...
最新文章
- JS(内置对象,全局函数,事件,事件对象)
- Nginx使用http_accesskey_module防盗链,告别referer,告别伪装
- SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用
- VUE2.x的浏览器兼容情况汇总
- 【跃迁之路】【651天】程序员高效学习方法论探索系列(实验阶段408-2018.11.24)...
- flask 接口 让别人能访问_flask搭建一个前后端分离的系统
- 一文搞懂如何使用Node.js进行TCP网络通信
- 管理老板,让他乖乖给你涨工资
- 《统计学习方法》—— k近邻方法、kd树以及python3实现
- mysql可视化创建外键说明_关于使用可视化图形工具navicat for mysql来创建外键的步骤...
- 【2017-5-21】问题总结 Session,Cookie,登录状态保持
- 智能优化算法:探路者优化算法-附代码
- MTK平台各种分区和bin/img(线刷包)对应关系和作用说明
- 图像基础 PSNR 峰值信噪比
- 阿里巴巴内部面试资料
- 容斥原理解决某个区间[1,n]闭区间与m互质数数量问题
- python培训学费多少钱-北京python培训学费多少钱?
- android通过代码设置铃声_更接地气的定制 ROM,还有哪些特性可以向原生 Android 借鉴?
- 长理2019选拔赛1.0
- 河北欧格教育:主图构图法