shiro 身份验证
shiro身份验证:
参考链接:http://jinnianshilongnian.iteye.com/blog/2019547
即在应用中证明是本人进行操作,一般通过用户名来证明
在shiro中,用户通过提供principals(身份)和credentials(证明)给shiro,从而进行验证
principals:身份,即主体的标识属性,可以i是任何东西,如用户名、邮箱等,唯一即可;一个主体可以有多个principals,但只有一个Primary principals,一般是用户名、密码、手机号
credentials:证明、凭证,即只有主体知道的安全值,如密码、数字证书等
登录/登出:
通过ini准备一些主体(实际应用中应该从数据库中获取):
[users]
draco = 615
harry = 630
测试:模仿用户登录
@Test
public void testLoginAndLogout(){ //创建sessionFactory,使用ini配置文件初始化
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-first.ini");
//创建securityManager实例
SecurityManager securityManager = factory.getInstance(); //将securityManager配置在当前运行环境中
SecurityUtils.setSecurityManager(securityManager); //获取当前subject
Subject currentUser = SecurityUtils.getSubject(); //创建用户令牌
UsernamePasswordToken token = new UsernamePasswordToken("draco", "615"); //直接登录
try {
currentUser.login(token);
} catch (UnknownAccountException uae) {
log.debug("用户名不存在 ");
} catch (IncorrectCredentialsException ice) {
log.debug("密码错误 ");
} catch (LockedAccountException lae) {
log.debug("未知错误? ");
} boolean authenticated = currentUser.isAuthenticated();
log.debug("是否登陆成功:"+ authenticated); }
身份验证的流程:
1 调用subject.login(token)进行登录,自动委托给SecurityManager
2 SecurityManger负责真正的身份验证逻辑,通过SecurityManager.login()将身份验证委托给Authenticator
3 Authenticator负责真正的身份验证,是Shiro API中核心的身份认证入口点
4 Authenticator可能会委托给相应的AuthenticatorStrategy进行多Realm身份验证,默认ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证
5 Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果抛出异常表明身份验证失败

shiro 身份验证的更多相关文章
- Shiro身份验证及授权(二)
一.Shiro 身份验证 身份验证的步骤: 收集用户身份 / 凭证,即如用户名 / 密码: 调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationExcepti ...
- Shiro 学习笔记(二)——shiro身份验证
身份验证: 在应用中证明他就是他本人.一般上用身份证.用户/密码 来证明. 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身 ...
- 跟开涛老师学shiro -- 身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- 第二章:shiro身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- shiro身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- SSM整合Shiro 身份验证及密码加密简单实现
1.导入maven的相关依赖 <!-- shiro --> <dependency> <groupId>org.apache.shiro</groupId&g ...
- cas+shiro实现不时时的去请求cas进行身份验证
cas+shiro不进行时时去cas验证身份信息,需要用shiro在当前系统有一份完整的认证机构. 那么有一个问题,什么时候去cas校验信息,目前的配置方式: cas系统设置默认的浏览器session ...
- shiro 简单的身份验证 案例
Apache Shiro是Java的一个安全框架,Shiro可以帮助我们完成:认证.授权.加密.会话管理.与Web集成.缓存等. 简单的身份验证 项目目录: 首先,在shiro.ini里配置了用户名和 ...
- Shiro固定身份验证
Shiro基础身份验证 如果要进行shiro的日志信息读取,那么需要使用一个org.apache.shiro.util.Factory接口,在这个接口里面定义有一 取得SecuruityManager ...
随机推荐
- sqler sql 转rest api 源码解析(二) resp 协议
resp 协议主要是方便使用redis 客户端进行连接,resp 主要是依赖 tidwall/redcon golang redis 协议包 resp 服务说明 server_resp.go 文件,干 ...
- 如何安装Visio
- Python __name__变量
原文: http://blog.csdn.net/u011511601/article/details/53504355 Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执 ...
- jmeter --- 监控器 Plugins (&jconsole)
jmeter --- 监控器 Plugins (&jconsole) Jmeter本身没有监控服务器资源的功能,需要添加额外插件 一.监控原理图 二.Jmeter-Plugs下载和安装 官网上 ...
- 配置中心Server端
为什么需要统一配置中心 1.不方便维护.一个功能被多个人开发,如果其中一个人修改了配置文件,另外一个人测试之前的功能,准备使用之前的配置. 2.配置内容安全与权限.线上的配置是不会对开发公开,特别是数 ...
- Go sql insert update使用举例
本文结合使用场景简单介绍sql中的insert.update的使用. 以下是代码: 如果记录已经存在,则更新,否则插入新记录. package main import ( "database ...
- CentOS6.4 添加php-fpm系统服务
简介: php-fpm安装完成后默认不会注册为系统服务,所以需要手工添加系统服务脚本.在/etc/init.d目录下新建php-fpm文件,并更改权限其即可. 1.检测/usr/local/php/v ...
- verilog编码规范
verilog编码规范 1.Register with Rising-Edge Coding Example (Verilog) Flip-Flops and Registers Control Si ...
- SDI工程时钟路径分析
SDI工程时钟路径分析 //------------- Receive Ports - RX Fabric Output Control Ports ------------- output rxou ...
- [转]Python中出错:ImportError: No module named win32com.client
Python中出错:ImportError: No module named win32com.client [问题] [已解决]Python中处理操作Excel中的图表(Chart,Graph) 的 ...