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中的注 ...
随机推荐
- URL末尾处的斜杠“/”
在输入网址的时候,比如输入"http://www.xxx.com/",此URL中末尾的斜杠是至关重要的.因为在这种情况下,浏览器能安全的添加斜杠.而像"http://ww ...
- shell 批量创建带随机字符串的html文件
思路一: echo $RANDOM|md5sum |tr "[0-9]" "[a-j]"|cut -c 2-11 RANDOM: linux内置的随机数变量 ...
- 八爪鱼采集器︱爬取外网数据(twitter、facebook)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 要想采集海外数据有两种方式:云采集+单机采集. ...
- hi3531结构: VB_CONF_S
定义视频缓存池属性结构体. typedef struct hiVB_CONF_S { HI_U32 u32MaxPoolCnt; /* max count of pools, (0,VB ...
- Java Web项目(Extjs)报错一
1.Java Web(Extjs)项目报错一 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -no ...
- 通过地址获得经纬度(百度Geocoding API)
1.什么是Geocoding? Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# .C++.Java等开发语言发送HT ...
- 【mongodb系统学习之十】mongodb查询(一)
十.mongodb查询:find ;查询时条件中不能引用文档中其他键的值: 1).查询数据库全部数据:语法db.collectionName.find();默认只显示前20条,如图: 2).按条件查询 ...
- Struts2实现文件上传(一)
Struts2实现文件上传 文件上传成功后结果页面 result.jsp: <%@ page language="java" import="java.util.* ...
- Flex父子窗口相互调用
Flex父子窗口相互调用 1.设计思路 (1)子窗口调用父窗口的方法 (2)子窗口做了修改后,返回父窗口,父窗口调用子窗口函数 2.设计源码 (1)父窗口 ParentWindow.mxml: < ...
- zTree实现地市县三级级联Service接口测试
zTree实现地市县三级级联Service接口测试 ProvinceServiceTest.java: /** * @Title:ProvinceServiceTest.java * @Package ...