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 ...
随机推荐
- css加载字体跨域问题
刚才碰到一个css加载字体跨域问题,记录一下.站点的动态请求与静态文件请求是不同的域名的.站点的域名为 www.domain.com,而静态文件的域名为 st.domain.com.问题:页面中加载c ...
- 爬取ofo共享单车信息
前段时间看到很多微信公众号在转发一篇爬取mobike单车的信息,也不知道什么原因,在网上搜索了下很少有人在爬取ofo共享单车的数据,所以决定看看可以爬取ofo共享单车的那些数据. 抓取数据开始的时候, ...
- ASP.NET AJAX入门系列(8):自定义异常处理
在UpdatePanel控件异步更新时,如果有错误发生,默认情况下会弹出一个Alert对话框显示出错误信息,这对用户来说是不友好的,本文看一下如何在服务端和客户端脚本中自定义异常处理,翻译自官方文档. ...
- 导入导出Excel文件
搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包 : http:// ...
- MyBatis Generator 生成的example 如何使用 and or 简单混合查询
简单介绍: Criteria,包含一个Cretiron的集合,每一个Criteria对象内包含的Cretiron之间是由AND连接的,是逻辑与的关系. oredCriteria,Example内有一个 ...
- App音频内录 录音
1.android模拟器 天天模拟器+BlueStacks 2.高清内录软件 Audio Record Wizard.exe 3.音频剪切软件 Adobe Audition CS6
- Python初学注意问题
本文是看到的,然后结合自己之前学习的过程也碰到的问题,所以就引用过来了:http://www.cnblogs.com/walkingp/p/3261663.html 一.注意你的Python版本 Py ...
- php each和list的用法
each与list的用法(PHP学习) 1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并 ...
- 禁用触发器的N种方法
一.禁用和启用单个触发器 禁用: ALTER TABLE trig_example DISABLE TRIGGER trig1 GO 恢复: ALTER TABLE trig_example EN ...
- 批量输出dwg文件中的文本
公司来了一批图纸,里面有一部分内容需要复制到excel中,几百张来图每一张都 手工复制,烦死了.编写一个CAD插件,自动导出文本,简单记录在下面. 想法是: 1.输入命令,选择所有dwg文件 2.挨个 ...