
Shiro 的身份认证
发布日期:2021-05-24 06:08:11
浏览次数:10
分类:精选文章
本文共 1281 字,大约阅读时间需要 4 分钟。
身份验证与Shiro框овор
身份验证是指用户提供身份信息(如用户名)和凭证(如密码)给Shiro框架进行认证,确认其与应用预期一致。以下是相关知识与操作步骤。
基本概念
Principals(身份)
通常是登录时提交的用户名,表示用户的身份信息。例如,登录时输入的用户名属于Principals。Credentials(凭证)
通常是Subject自己知道的密码。例如,登录时输入的密码属于Credentials。UsernamePasswordToken
用于支持基于用户名和密码的身份验证。如果需要记住用户的身份,可以通过将token设为记住的方式实现。不过需要注意的是,Shiro的记住功能不会记住凭证,也就不会自动登录。
身份验证步骤
收集Subject提交的Principals和Credentials,生成token。
UsernamePasswordToken token = new UsernamePasswordToken(username, password);token.setRememberMe(true);
提交Principals和Credentials进行身份验证。
Subject currentUser = SecurityUtils.getSubject();currentUser.login(token);
处理认证结果。
try { currentUser.login(token);} catch (AuthenticationException e) { // 用户名或密码错误 e.printStackTrace();} catch (IncorrectCredentialsException e) { // 密码错误} catch (LockedAccountException e) { // 账户锁定}
注销操作
调用currentUser.logout()
后,Subject会变成匿名状态,之前的会话将失效。对于基于Cookies的Web应用,这会清除记忆的用户状态。
Remembered(记住我)
记住的Subject不是匿名的,是有一个已知的Principal的。
Remembered的判断
subject.isRemembered() → true
注意事项
Shiro的记住功能仅记住Principals,不会记忆凭证,也不会自动登录。
Authenticated(已认证)
已认证Subject是指在当前会话中,通过Principals和Credentials成功认证的Subject。
subject.isAuthenticated() → true
重要性
isRemembered()
和isAuthenticated()
是互斥的。如果已被记住,则不会已经认证。
这篇文章主要介绍了Shiro框架中的基于用户名密码的身份验证流程,简单明了地解释了每一步的含义与操作方法。如果需要更深入的学习,可以进一步探讨不同的认证策略或集成第三方身份验证器。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月24日 02时29分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C++面向对象程序设计实践——任务与指导书(2)
2019-03-21
社区医疗app-Ui设计
2019-03-21
Python图像处理之PIL
2019-03-21
HTML 表单验证
2019-03-21
爬虫代理http协议的请求
2019-03-21
mysql时间为0000-00-00 00:00:00时,程序读取错误
2019-03-21
ubuntu System program problem detected
2019-03-21
使用ivx图表组件的经验总结
2021-05-24
17场演讲,500+嘉宾 |「观远2020智能决策峰会暨产品发布会」看点先知道
2021-05-24
专访汇付数据副总裁姜靖宇:“纸上谈兵”时代终结,人工智能将变革第三方支付行业
2021-05-24
张小龙的“败走麦城”
2021-05-24
小程序的生命周期
2021-05-24
Redis学习笔记—单个键管理
2021-05-24
多线程基础部分
2021-05-24
Java学习记录之ArrayList集合
2021-05-24
PHP之配置开发环境
2021-05-24
Shiro 的身份认证
2021-05-24
什么是信道编码?信道编码比较
2021-05-24
wordpress架站踩坑过程
2021-05-24
一个简单的游戏框架[汇总]
2021-05-24