在认证、授权内部实现机制中都有提到,最终处理都将交给Real进行处理。因为在Shiro中,最终是通过Realm来获取应用程序中的用户、角色及权限信息的。通常情况下,在Realm中会直接从我们的数据源中获取Shiro需要的验证信息。可以说,Realm是专用于安全框架的DAO。

一、认证实现 
正如前文所提到的,Shiro的认证过程最终会交由Realm执行,这时会调用Realm的getAuthenticationInfo(token)方法。 
该方法主要执行以下操作:
1、检查提交的进行认证的令牌信息 
2、根据令牌信息从数据源(通常为数据库)中获取用户信息 
3、对用户信息进行匹配验证
4、验证通过将返回一个封装了用户信息的AuthenticationInfo实例
5、验证失败则抛出AuthenticationException异常信息

而在我们的应用程序中要做的就是自定义一个Realm类,继承AuthorizingRealm抽象类,重载doGetAuthenticationInfo (),重写获取用户信息的方法。

Java代码  
  1. protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
  2. UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
  3. User user = accountManager.findUserByUserName(token.getUsername());
  4. if (user != null) {
  5. return new SimpleAuthenticationInfo(user.getUserName(), user.getPassword(), getName());
  6. } else {
  7. return null;
  8. }
  9. }

二、授权实现 
而授权实现则与认证实现非常相似,在我们自定义的Realm中,重载doGetAuthorizationInfo()方法,重写获取用户权限的方法即可。

Java代码  
  1. protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
  2. String userName = (String) principals.fromRealm(getName()).iterator().next();
  3. User user = accountManager.findUserByUserName(userName);
  4. if (user != null) {
  5. SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
  6. for (Group group : user.getGroupList()) {
  7. info.addStringPermissions(group.getPermissionList());
  8. }
  9. return info;
  10. } else {
  11. return null;
  12. }
  13. }

来源: http://kdboy.iteye.com/blog/1169631

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/jeffen/p/6185604.html

Apache Shiro 使用手册(四)Realm 实现相关推荐

  1. Apache Shiro 使用手册

    2019独角兽企业重金招聘Python工程师标准>>> 很好的学习资源,谢谢kdboy博主! Apache Shiro 使用手册(一)Shiro架构介绍   http://kdboy ...

  2. Apache Shiro 使用手册---转载

    原文地址:http://www.360doc.com/content/12/0104/13/834950_177177202.shtml (一)Shiro架构介绍 一.什么是Shiro  Apache ...

  3. Apache Shiro 使用手册(五)Shiro 配置说明

    Apache Shiro的配置主要分为四部分: 对象和属性的定义与配置 URL的过滤器配置 静态用户配置 静态角色配置 其中,由于用户.角色一般由后台进行操作的动态数据,因此Shiro配置一般仅包含前 ...

  4. Apache Shiro 使用手册(三)Shiro 授权

    2019独角兽企业重金招聘Python工程师标准>>> 一.授权的三要素 授权有着三个核心元素:权限.角色和用户. 权限 权限是Apache Shiro安全机制最核心的元素.它在应用 ...

  5. 10分钟教会你Apache Shiro

    前言 欢迎来到Apache Shiro 10分钟之旅! 希望通过这个简单.快速的示例,可以让你对应用程序中使用Shiro有个深入的了解.嗯,10分钟你应该可以搞定它. 概述 Apache Shiro是 ...

  6. 在 Web 项目中应用 Apache Shiro

    Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心,简单来说,"认证"就是证明你是谁? Web ...

  7. apache shiro版本查看_深入学习SpringBoot(四):springboot整合shiro

    shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/ 它提供了很方便的权限认证和登录的功能. 而springboot作为一个开源框架,必然提供了和shi ...

  8. Apache shiro介绍

    原文链接Application Security With Apache Shiro(翻译) 前面自己自己配合谷歌翻译,后面大部分谷歌翻译. 当你尝试保护你的程序时候你会被困扰吗?你会觉得现有的jav ...

  9. 让 Apache Shiro 保护你的应用

    让 Apache Shiro 保护你的应用 作者:Les Hazlewood 译者:胡伟红 查看英文原文: Application Security With Apache Shiro 在尝试保护你的 ...

最新文章

  1. 如何处理网络丢包故障?—Vecloud微云
  2. OpenGL开发学习指南一(freeglut+glew)
  3. python中面向对象的缺点_最简单的方法搞懂Python面向对象
  4. java 线程停止在那个为止_java停止线程
  5. 使用PING判断TCP/IP故障
  6. Java后台生成小程序二维码
  7. 从html源码中获取图片链接地址和视频链接地址
  8. android平台数字看板,数据看板
  9. 将apk和所需库文件编译打包到system/priv-app路径下
  10. MMDet——基于Chamfer Distance评估点集
  11. 服务式办公室,价格影响选择
  12. python可以自动运行m文件吗_如何运行m文件而不启动matlab
  13. Python中记录程序运行时间
  14. kubernetes v1.20项目之二进制扩容多Master
  15. 计算机DNS怎么配置,电脑dns地址设置为多少
  16. docker实践-oxidized网络设备自动备份部署
  17. sphinx(斯芬克斯)mysql全文搜索引擎
  18. Python/Numpy 合并复数的实部和虚部
  19. 为何热爱机器人工程专业的朋友如此少
  20. 2、igraph的简单实战

热门文章

  1. HDU 1026 Ignatius and the Princess I 迷宫范围内的搜索剪枝问题
  2. Python全栈工程师(Python3 所有基础内容 0-0)
  3. 08-cmake语法-set()
  4. 每天一个Linux命令 7
  5. Entity Framework 实体框架的形成之旅--实体数据模型 (EDM)的处理(4)
  6. SecureCRT 7 序列号
  7. C#全局键盘监听(Hook)
  8. php 多只能上传20个文件解决办法,修改php.ini 的max_file_uploads
  9. Select的OnChange()事件
  10. Linux 文本界面转到图形界面