Shiro 的身份认证
来源:互联网 发布:google大数据 编辑:程序博客网 时间:2024/04/30 10:57
Authentication:身份验证的过程。通过提交用户的身份和凭证给shiro,以判断它们是否和应用程序预期的相匹配
基本概念
Principals(身份): 比如登录时提交的用户名
Credentials(凭证):通常是只被Subject知道的密码。比如登录时提交的密码
基本验证步骤
1.收集Subject提交的Principals(身份) 和Credentials (凭证) ,生成token.
2.提交Principals(身份) 和Credentials (凭证) 进行身份验证
3.如果提交成功,则运行访问,否则重新进行身份验证或者阻止访问。
UsernamePasswordToken 支持用户名/密码身份验证
//1.收集Subject提交的用户名/密码 ,生成token.UsernamePasswordToken token = new UsernamePasswordToken(username, password);token.setRememberMe(true); //2.提交用户名/密码 进行身份验证Subject currentUser = SecurityUtils.getSubject();currentUser.login(token);//3.处理认证结果try { currentUser.login(token);} catch (AuthenticationException e) { // 用户名不对 e.printStackTrace();} catch (IncorrectCredentialsException e) { // 密码不对}catch (LockedAccountException e) { // 密码锁死}
logout (注销)
调用logout之后,该Sbuject的实例被再次认为是匿名的,任何现有的session都将失效,任何身份都将市区关联。除了web应用程序。因为webapp 是依靠cookie记住的。
currentUser.logout();
Remebered(记住我)
一个记住我的subject不是匿名的,是有一个已知的身份ID的,就是subject.getPrincipal()
是非空的。
但是这个被记住的身份ID是之前的seesion中被认证的。
如果subject.isRemembered()
返回ture,则subject是被记住的。
shiro里的remeberme 并不是重新登录。只是记住principals 并不会记住credentials 也不会帮你重新登录。
以前的记住我,是会帮忙重新登录
Authenticated(已认证)
一个已认证的subject是指在当前session中通过principals和credentials被成功认证了的。
subject.isAuthenticated()
返回ture代表 用户是通过用户名和密码认证过了的。
Remebered的权限比较低
Remebered 和Authenticated 是互斥的。
如果subject.isRemembered()
返回ture,那么 subject.isAuthenticated()
返回false
- Shiro 的身份认证
- Shiro身份认证的流程
- Shiro 的身份认证-Realm
- 通过Shiro完成基础的身份认证
- 自学-Shiro的身份认证-05
- 身份认证(shiro)
- shiro身份认证过程
- shiro身份认证
- shiro身份认证
- Shiro身份认证
- Shiro ---身份认证、授权
- Shiro身份认证
- 【shiro】--- 身份认证
- Shiro身份认证
- Apache Shiro 身份认证例子
- Apache Shiro 身份认证例子
- 用Shiro实现身份认证
- shiro身份认证(第一章)
- 正则表达式——正则标记
- git撤销已Push到服务器的Commit
- 实现简单的 react-redux
- hive几种存储格式: Storage Format
- 什么是范数?
- Shiro 的身份认证
- Java 反射实例
- unavailable function 'system': not available on iOS
- 欢迎使用CSDN-markdown编辑器
- 实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
- Centos7配置国内yum源
- leetcode 278. First Bad Version 二分查找
- 第五周 项目1
- 未来五年最具前景的一门编程语言是什么?