认证

(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认证和授权的思路相关推荐

  1. shiro认证与授权

    1.shiro认证 1.1.身份验证 身份验证:一般需要提供如身份ID等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明. 在shiro中,用户需要提供principals(身份) ...

  2. Shiro认证和授权

    shiro介绍 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. ...

  3. shiro认证与授权:自定义realm

    [main] #声明realm permReam=cn.learn.shiro.PermissionRealm #注册realm到securityManager中 securityManager.re ...

  4. shiro认证与授权:基于ini的用户授权

    [users] #用户名=密码,角色名 zhangsan=123456,role1,role2 lisi=123456,role2 [roles] #角色 #角色名=权限列表 role1=user:s ...

  5. 源码分析shiro认证授权流程

    1. shiro介绍 Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户"登录": 授权 - ...

  6. Springboot整合shiro基于url身份认证和授权认证

    你还不会shiro吗? 前奏 shiro核心配置文件(rolesFilter可选). 身份认证 多表登录源如何操作? 授权管理 如何解决界面多角色/资源问题 访问效果 权限管理在日常开发中很重要,所以 ...

  7. authc过滤器 shiro_使用Shiro实现认证和授权(基于SpringBoot)

    Apache Shiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直观,全面的身份验证,授权,加密和会话管理解决方案.下面是在SpringBoot中使用Shiro进行认证和授权 ...

  8. Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03

    从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...

  9. Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02

    代码延续地址:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-01 1.创建t_role角色表(比如管理员admin,普通用户user等),创建t_pers权限表 ...

最新文章

  1. 去除ios input部分默认样式
  2. 【SAP】相关性类型简介
  3. SAP CRM pricing read的实现逻辑
  4. android截图canvas为空,html2canvas截图空白问题的解决
  5. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug
  6. dotTrace 6.1帮你理解SQL查询如何影响应用性能
  7. HDU 2296 Ring AC自动机 + DP
  8. 4.21-4.26旅行记之山城重庆(二)
  9. 控制系统数字仿真与CAD-第三次实验-附完整代码
  10. 关闭MySQL日志,删除mysql-bin.0000*日志文件
  11. php变量自减,PHP 中「自增、自减」运算引发的奇怪问题
  12. 微服务架构设计模式 pdf_分享一份美团T9大牛总结的神仙微服务架构设计模式PDF...
  13. 16G kingston U盘 解除写保护
  14. 彻底搞懂瓦片地图拼接原理并附具体实现
  15. 研大考研:只办最好的集训营
  16. Mysql三种常见备份表方式
  17. 微信小程序开发者工具提示“网络连接失败”
  18. 【测试】你的浏览器HOLD住HTML5吗?
  19. springboot点餐微信小程序毕业设计源码221144
  20. 2017年12月全球数据库排名:SQL Server 跌势明显,刚获阿里投资的MariaDB表现良好

热门文章

  1. 易语言返回数组数据的解决方法
  2. @rive-app/canvas 交互式动画 学习笔记
  3. 1024 游戏攻略|马尔可夫链 Java代码实现
  4. 关于普朗克的量子化假说一些故事
  5. 区块链+物联网技术结合,区块链技术应用开发解决方案
  6. JAVAMVC的时鲜蔬菜配送系统计算机毕业设计Mybatis+系统+数据库+调试部署
  7. 剑侠单机版显示服务器正在维护,剑侠情缘8月22日部分服务器维护开服及补偿公告...
  8. 无人机问答:什么是升阻比?
  9. 谷歌引擎表达式aviator简单demo
  10. 亿发软件:医疗器械GSP信息管理软件(质量管理系统) ,专业gsp过检版本