Shiro认证和授权的思路
认证
(1)获取当前的Subject,调用SecurityUtils.getSubject();
(2)测试当前的用户是否已经被认证,即是否已经登录。调用Subject的isAuthenticated();
(3)若没有被认证,则把用户名和密码封装为UsernamePasswordToken对象。
①创建一个表单页面
②把请求提交到SpringMVC的Handler
③获取用户名和密码
(4)执行登录:调用Subject的login(AuthenticationToken)方法。
(5)自定义Realm的方法,从数据库中获取对应的记录,返回给Shiro。
①实际上需要继承org.apache.shiro.realm.AuthenticatingRealm类
②实现doGetAuthenticationInfo(AuthenticationToken)方法
(6)由shiro完成对密码的比对。
授权
Shiro支持三种方式的授权:
编程式:通过写if/else授权代码块完成。
注解式:通过在执行的Java方法上放置相应的注解完成,没有权限将抛出相应的异常。
JSP/GSP标签:在JSP/GSP页面通过相应的标签完成。
2.2.授权的实现
授权需要继承AuthorizingRealm类,并实现其doGetAuthorizationInfo方法。
AuthorizingRealm类继承自AuthenticatingRealm,但没有实现AuthenticatingRealm中的doGetAuthenticationInfo,所以认证和授权只需要继承AuthorizingRealm就可以了,同时实现他的两个抽象方法。
//SimpleAuthrizationInfo用于向用户授权的类对象,这里获取对象SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();//将角色和权限信息设置到SimpleAuthorizationInfoSubject subject = SecurityUtils.getSubject();//获取当前的对象User principal = (User)subject.getPrincipal();//获得当前对象的唯一标识符号,是任意的形式//给用户添加权限info.addStringPermission(principal.getPerms());//获得user权限,并赋予当钱请求需要授权才能访问的资源用户return info;将SimpleAuthorizationInfo,即对于用户的授权信息返回,如果我们在上面进行的授权操作授予的权限/用户本身具有的权限包括了请求当前资源的权限,那么资源请求成功,如果不包含就请求失败
Shiro认证和授权的思路相关推荐
- shiro认证与授权
1.shiro认证 1.1.身份验证 身份验证:一般需要提供如身份ID等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明. 在shiro中,用户需要提供principals(身份) ...
- Shiro认证和授权
shiro介绍 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. ...
- shiro认证与授权:自定义realm
[main] #声明realm permReam=cn.learn.shiro.PermissionRealm #注册realm到securityManager中 securityManager.re ...
- shiro认证与授权:基于ini的用户授权
[users] #用户名=密码,角色名 zhangsan=123456,role1,role2 lisi=123456,role2 [roles] #角色 #角色名=权限列表 role1=user:s ...
- 源码分析shiro认证授权流程
1. shiro介绍 Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 - ...
- Springboot整合shiro基于url身份认证和授权认证
你还不会shiro吗? 前奏 shiro核心配置文件(rolesFilter可选). 身份认证 多表登录源如何操作? 授权管理 如何解决界面多角色/资源问题 访问效果 权限管理在日常开发中很重要,所以 ...
- authc过滤器 shiro_使用Shiro实现认证和授权(基于SpringBoot)
Apache Shiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观,全面的身份验证,授权,加密和会话管理解决方案.下面是在SpringBoot中使用Shiro进行认证和授权 ...
- Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03
从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...
- Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02
代码延续地址:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-01 1.创建t_role角色表(比如管理员admin,普通用户user等),创建t_pers权限表 ...
最新文章
- 去除ios input部分默认样式
- 【SAP】相关性类型简介
- SAP CRM pricing read的实现逻辑
- android截图canvas为空,html2canvas截图空白问题的解决
- 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
- dotTrace 6.1帮你理解SQL查询如何影响应用性能
- HDU 2296 Ring AC自动机 + DP
- 4.21-4.26旅行记之山城重庆(二)
- 控制系统数字仿真与CAD-第三次实验-附完整代码
- 关闭MySQL日志,删除mysql-bin.0000*日志文件
- php变量自减,PHP 中「自增、自减」运算引发的奇怪问题
- 微服务架构设计模式 pdf_分享一份美团T9大牛总结的神仙微服务架构设计模式PDF...
- 16G kingston U盘 解除写保护
- 彻底搞懂瓦片地图拼接原理并附具体实现
- 研大考研:只办最好的集训营
- Mysql三种常见备份表方式
- 微信小程序开发者工具提示“网络连接失败”
- 【测试】你的浏览器HOLD住HTML5吗?
- springboot点餐微信小程序毕业设计源码221144
- 2017年12月全球数据库排名:SQL Server 跌势明显,刚获阿里投资的MariaDB表现良好
热门文章
- 易语言返回数组数据的解决方法
- @rive-app/canvas 交互式动画 学习笔记
- 1024 游戏攻略|马尔可夫链 Java代码实现
- 关于普朗克的量子化假说一些故事
- 区块链+物联网技术结合,区块链技术应用开发解决方案
- JAVAMVC的时鲜蔬菜配送系统计算机毕业设计Mybatis+系统+数据库+调试部署
- 剑侠单机版显示服务器正在维护,剑侠情缘8月22日部分服务器维护开服及补偿公告...
- 无人机问答:什么是升阻比?
- 谷歌引擎表达式aviator简单demo
- 亿发软件:医疗器械GSP信息管理软件(质量管理系统) ,专业gsp过检版本