1.1 自定义Realm

上边的程序使用的是shiro自带的IniRealm,IniRealm从ini配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义realm。分享牛系列,分享牛专栏,分享牛。

1.1.1 shiro提供的realm

最基础的是Realm接口,CachingRealm负责缓存处理,AuthenticationRealm负责认证,AuthorizingRealm负责授权,通常自定义的realm继承AuthorizingRealm。

1.1.2 自定义Realm

public class CustomRealm1 extends AuthorizingRealm {@Overridepublic String getName() {return "customRealm1";}//支持UsernamePasswordToken@Overridepublic boolean supports(AuthenticationToken token) {return token instanceof UsernamePasswordToken;}//认证@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {//从token中 获取用户身份信息String username = (String) token.getPrincipal();//拿username从数据库中查询//....//如果查询不到则返回nullif(!username.equals("zhang")){//这里模拟查询不到return null;}//获取从数据库查询出来的用户密码 String password = "123";//这里使用静态数据模拟。。//返回认证信息由父类AuthenticatingRealm进行认证SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(username, password, getName());return simpleAuthenticationInfo;}}
// 授权@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {// 获取身份信息String username = (String) principals.getPrimaryPrincipal();// 根据身份信息从数据库中查询权限数据//....这里使用静态数据模拟List<String> permissions = new ArrayList<String>();permissions.add("user:create");permissions.add("user.delete");//将权限信息封闭为AuthorizationInfoSimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();for(String permission:permissions){simpleAuthorizationInfo.addStringPermission(permission);}return simpleAuthorizationInfo;}

1.1.3 shiro-realm.ini

[main]

#自定义 realm

customRealm=cn.shareniu.shiro.authentication.realm.CustomRealm1

#将realm设置到securityManager

securityManager.realms=$customRealm

思考:这里为什么不用配置[users]了??

shiro-permission.ini中的[roles]为什么不需要了??

1.1.4 测试代码

测试代码同入门程序,将ini的地址修改为shiro-realm.ini。

分别模拟账号不存在、密码错误、账号和密码正确进行测试。

 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) java架构师交流群 523988350

shiro自定义Realm相关推荐

  1. 从实例入手学习Shiro自定义Realm实现查询数据进行验证

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  2. Shiro验证策略-shiro自定义实现Realm来实现身份验证-shiro散列加密算法-shiro授权-shiro自定义Realm实现授权

    Shiro验证策略 Authentication Strategy:认证策略,在shiro中有三种认证策略: AtleastOneSuccessfulStrategy[默认] 如果一个或多个Realm ...

  3. Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

    一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod. ...

  4. shiro框架,自定义realm注入service失败解决办法

    shiro框架,自定义realm注入service失败解决办法 报错如下: org.springframework.beans.factory.BeanCreationException: Error ...

  5. shiro之自定义realm

    前言: 首先我们先分析怎么实现自定义某些realm,按照以往的方法肯定是实现接口或者继承某类 查看继承树结构 通过debug模式下分析源码可以得知 AuthenticatingRealm类中的 doG ...

  6. Shiro框架:授权流程、授权方式、Shiro授权入门程序、自定义Realm进行授权

    一.Shiro授权: 1.授权与权限: (1)授权:访问控制,必须具有该资源的访问权限才可以访问该资源. (2)权限模型:标准权限数据模型包括 :用户.角色.权限(包括资源和权限).用户角色关系.角色 ...

  7. Shiro框架:Shiro简介、登陆认证入门程序、认证执行流程、使用自定义Realm进行登陆认证、Shiro的MD5散列算法

    一.Shiro介绍: 1.什么是shiro: (1)shiro是apache的一个开源框架,是一个权限管理的框架,实现用户认证.用户授权. (2)spring中有spring security,是一个 ...

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

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

  9. Shiro第二篇【介绍Shiro、认证流程、自定义realm、自定义realm支持md5】

    什么是Shiro shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证.用户授权. spring中有spring security (原名Acegi),是一个权限框架,它和sp ...

最新文章

  1. SystemCenter2012SP1实践(24)【录像】创建私有云
  2. LR(0)语法制导翻译
  3. SOA 设计原则和 Web 服务中的数据传输
  4. NYOJ 711 最舒适的路线(并查集)
  5. FPGA开发经验谈-FPGA 设计的四种常用思想与技巧(二)
  6. Mac升级到EI Captain之后pip install 无法使用问题
  7. C#:导入Excel通用类(CSV格式)
  8. erlang开发环境配置
  9. UVA 10129 Play on Words
  10. 梦想与现实之间的距离
  11. linux远程连接交换机,思科:路由器、交换机 ssh远程连接
  12. RHEL服务器配置BIND以及实现DNS负载均衡
  13. 目标检测(二): meanshift与camshift算法
  14. List Navision Security setting, 列出Navision相关账户的权限
  15. 普通文本与富文本,超文本之间的区别
  16. c++ 多边形求交集代码(凸多边形与凸多边形交集)
  17. 如何进行APP抓包 ? - 学习/实践
  18. 服务器主板显示ff,主板诊断卡代码显示ff的维修方法
  19. fcpx插件:Stupid raisins show pop for Mac(20个标题展示模板
  20. 生产者消费者模型详解

热门文章

  1. 提高开发效率之安卓模板(上面有四种模板的教程,我之前会两种,看完之后还是只会两种2333)
  2. 获取另一个驱动的设备结构体_Linux 驱动开发 / 设备模型快速入门
  3. 在微信小程序上,帮助中心界面实现类似手风琴案例
  4. 2021-04-14 Matlab实现模糊聚类分析 FCM
  5. 2021-01-07 matlab数值分析 常微分方程初边值问题数值解 标准龙格库塔四阶四段公式 欧拉法
  6. angular创建组件命令
  7. 以下哪些是oracle预定义角色,Oracle中预定义角色有哪些?
  8. python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解
  9. 解决使用pip安装lxml包报错问题Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
  10. java获取环境变量路径_通过System获取java环境变量的路径