Apache Shiro 使用手册(二) Shiro 认证
Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权和会话管理功能。本文主要关注其认证过程,即验证用户身份的环节。 在 Shiro 的认证过程中,用户需要提供实体信息(Principals)和凭据信息(Credentials)。Principals 是用来唯一标识用户的身份,比如用户名、身份证号等;Credentials 则是用来验证这些身份的证据,常见的如密码。最常见的实体/凭据组合是“用户名/密码”。 **Shiro 认证过程** 1. **收集实体/凭据信息** 用户输入用户名和密码后,可以创建 `UsernamePasswordToken` 对象,这个类不仅包含用户名和密码,还支持 "Remember Me" 功能。例如: ```java UsernamePasswordToken token = new UsernamePasswordToken(username, password); token.setRememberMe(true); ``` “Remember Me”功能允许用户在一段时间内免登录访问,但并不等同于已认证。已记住的用户只是表明不是匿名用户,但访问需要认证的资源时仍需重新提交认证信息。 2. **提交实体/凭据信息** 使用 `SecurityUtils.getSubject()` 获取当前的 Subject,然后调用 `Subject.login(token)` 提交认证请求: ```java Subject currentUser = SecurityUtils.getSubject(); currentUser.login(token); ``` 3. **认证处理** Shiro 内部通过一系列异常处理来判断认证是否成功。`Subject.login()` 方法若不抛出异常,则表示认证通过。如果抛出异常,如 `UnknownAccountException`(未知账号)、`IncorrectCredentialsException`(凭证错误)、`LockedAccountException`(账号锁定)等,表示认证失败。应用可以根据这些异常类型做相应的处理。 **登出操作** 登出时,调用 `Subject.logout()` 删除登录信息,这会清除 Session 信息并将 Subject 视为匿名用户: ```java currentUser.logout(); ``` **认证内部处理机制** Shiro 的认证流程主要包括以下步骤: 1. 应用程序创建 `AuthenticationToken` 实例并调用 `Subject.login()`。 2. `Subject` 委托给 SecurityManager 进行认证,通常是 `DelegatingSubject` 类的实例。 3. SecurityManager 调用内置 Authenticator(通常为 `ModularRealmAuthenticator`)的 `authenticate()` 方法。 4. `ModularRealmAuthenticator` 将认证请求分发到配置的 Realm 中,每个 Realm 负责处理特定的认证逻辑,比如从数据库中查找用户信息并验证密码。 认证过程中,如果 Realm 返回了有效的身份信息,`Authenticator` 将结合 Principals 和 Credentials 来确认用户身份。如果所有 Realm 都认证成功,Shiro 会将这些 Realm 的结果合并,从而完成整个认证过程。 Apache Shiro 的认证机制提供了简单且灵活的方式来进行用户身份验证。通过理解这一过程,开发者可以更好地集成 Shiro 到自己的应用程序中,实现安全的用户身份管理和权限控制。























- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 通信工程设计概述.ppt
- 公务员信息化与电子政务考试培训PPT课件.ppt
- 大众点评网网络推广方案.ppt
- 如何做好医疗企业网络营销策划.doc
- 华中科技大学计算机网络课件习题讲解.doc
- 基于51单片机的数字电压表设计.doc
- (源码)基于C语言的嵌入式文件管理与查看系统.zip
- 2023年浙江省计算机二级考试办公自动化高级应用中Excel考试题常用函数.doc
- 网络科技公司创业计划书通用6篇.docx
- 精华版国家开放大学电大《网络系统管理与维护》机考2套真题题库及答案2.pdf
- 外贸企业营销型网站建设技巧-.doc
- (源码)基于Swift框架的iOS自定义模板项目.zip
- (源码)基于Android和ZXing库的二维码条形码扫描系统.zip
- (源码)基于JavaSpring Boot框架的快速开发系统.zip
- 大三上Python大作业,关于AC小说网的网络爬虫,爬取了首页小说的内容等相关信息 网址:https://m.acxsw.com/
- (源码)基于MicroPython的ESP32外设控制项目.zip



评论0