shiro(二)自定义realm,模拟数据库查询验证
自定义一个realm类,实现realm接口
- package com;
- import org.apache.shiro.authc.*;
- import org.apache.shiro.realm.Realm;
- public class MyRealm implements Realm {
- /**
- * 获取当前realm的名称
- * @return
- */
- @Override
- public String getName() {
- return "MyRealm";
- }
- /**
- * 判断当前认证方式是不是用户名和密码
- * @param authenticationToken
- * @return
- */
- @Override
- public boolean supports(AuthenticationToken authenticationToken) {
- return authenticationToken instanceof UsernamePasswordToken;
- }
- /**
- * 返回认证信息,这里可以使用链接数据库查询进行判断
- * 只是模拟登录,有兴趣者可以访问数据库进行判断
- * @param authenticationToken
- * @return
- * @throws AuthenticationException
- */
- @Override
- public AuthenticationInfo getAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
- /*获取用户名*/
- String username = authenticationToken.getPrincipal().toString();
- /*获取密码,由于密码是进行了加密的,所以必须转为char数组再转String
- * 否则无法识别*/
- String password =String.valueOf((char [])authenticationToken.getCredentials());
- if (!"admin".equals(username)){
- throw new AuthenticationException();
- }
- if (!"666".equals(password)){
- throw new AuthenticationException();
- }
- /*返回认证的结果*/
- return new SimpleAuthenticationInfo(username,password,this.getName());
- }
- }
将自定义realm类配置到.ini文件中
- [main]
- #这里相当于实例化了一个realm对象,这里写的是类路径
- myRealm=com.MyRealm
- #这里相当于set进去一个参数
- securityManager.realms=$myRealm
- #[users],由于采用的自定义realm,所以此处不会被读取了
- #admin=admin
- [roles]
- admin=123
测试代码请点击此处链接http://www.cnblogs.com/qq376324789/p/8640651.html
*提示
subject就相当于当前用户,realm就相当于dao,上面的代码应该一步一步的写的很清楚了,直接复制进去就应该可以正常运行的;
真正理解还是需要自己debug一步一步去看的;后面还会继续后面的步骤。
shiro(二)自定义realm,模拟数据库查询验证的更多相关文章
- shiro中自定义realm实现md5散列算法加密的模拟
shiro中自定义realm实现md5散列算法加密的模拟.首先:我这里是做了一下shiro 自定义realm散列模拟,并没有真正链接数据库,因为那样东西就更多了,相信学到shiro的人对连接数据库的一 ...
- shiro之自定义realm
Shiro认证过程 创建SecurityManager--->主体提交认证--->SecurityManager认证--->Authenticsto认证--->Realm验证 ...
- 6、Shiro之自定义realm
1.创建一个包存放我们自定义的realm文件: 创建一个类名为CustomRealm继承AuthorizingRealm并实现父类AuthorizingRealm的方法,最后重写: CustomRea ...
- Shiro -- (三) 自定义Realm
简介: Realm:域,Shiro 从从 Realm 获取安全数据(如用户.角色.权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定 ...
- (十)shiro之自定义Realm以及自定义Realm在web的应用demo
数据库设计 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
先来看问题 纠结了几个小时终于找到了问题所在,因为shiro的realm属于Filter,简单说就是初始化realm时,spring还未加载相关业务Bean,那么解决办法就是将springmvc ...
- Shiro入门 - 通过自定义Realm连数数据库进行认证
添加shiro-realm.ini文件 [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Sprin ...
- shiro授权及自定义realm授权(七)
1.授权流程
- Shiro入门 - 通过自定义Realm连数数据库进行授权
shiro-realm.ini [main] #自定义Realm myRealm=test.shiro.MyRealm #将myRealm设置到securityManager,相当于Spring中的注 ...
随机推荐
- home目录迁移至新分区
在用户home目录越来越大时,就可以考虑将home目录迁移至新的分区. 1.创建新分区. fidisk /dev/sda:用磁盘管理器打开磁盘 n:新建 +10g :设置分区为10G w :保存 保存 ...
- Innotop简单介绍
Innotop介绍 Innotop是一款Perl脚本编写.开源.功能强大的MySQ的监控工具,它通过文本模式(命令行模式)监控,功能强大,配置简单,易于使用等等特性.Innotop这个项目位于ht ...
- IDirectDraw接口
创建一个主DirectDraw对象,并使用QueryInterface()方法来得到最新的IDirectDraw7接口,或是直接用DirectDrawCreateEx()函数直接创建一个DirectD ...
- R语言︱集合运算——小而美法则
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 集合运算的一般规则如下: union(x ...
- 常用的Java转义字符
1.常用的Java转义字符 \n : 回车 \t : 水平制表符 \r : 换行 \f : 换页 \' : 单引号 \'' : 双引号 ...
- PC响应式、固宽布局思想
截止目前,国内绝大多数内容为主的网站(知乎,果壳,V2EX,网易新闻等)均使用内容区定宽布局,大多数电商网站(网易考拉,京东,聚美优品)也使用了内容区定宽的布局,也有些网站使用了自适应布局. 如果不明 ...
- GridView 翻页 索引超出范围
事件回顾 今天GridView翻页时,又遇到错误:索引超出范围.必须为非负值并小于集合大小. 这是当时的PageIndexChanging和RowCommand两个事件的后台代码 protected ...
- 登录对话框(窗体程序)--JAVA基础
1.用到的JFrame(框架)类对象(这里设JFrame类对象是frame)的方法有: frame.add(); 添加组件到frame框架中 frame.setVisible(); 设置框架是否可见 ...
- 【转载】Spark运行架构
1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个 ...
- less-more使用方法及区别
Less按屏(空格,page up/page down)或按行(回车)查看文件 Less按屏(空格)或按行(回车)查看文件(不能向上翻)