Shiro入门教程:BosRealm配置解析

需积分: 0 2 下载量 56 浏览量 更新于2024-08-18 收藏 1.34MB PPT 举报
"Shiro入门学习,配置BosRealm以实现身份验证和授权" Apache Shiro是一个流行的Java安全框架,提供了身份验证、授权、会话管理和加密等核心功能。Shiro的简单架构使得它易于理解和使用,可以应用于各种类型的应用程序,包括Web应用。通过自定义Realm,我们可以对接自己的用户数据源,实现用户的身份验证和权限控制。 在提供的代码段中,`BosRealm` 类继承了 `AuthorizingRealm`,这是Shiro中用于身份验证和授权的基类。`AuthorizingRealm` 需要实现两个关键方法:`doGetAuthenticationInfo()` 和 `doGetAuthorizationInfo()`。 1. **认证方法** (`doGetAuthenticationInfo()`): - 这个方法用于验证用户的身份。在示例中,当用户尝试登录时,Shiro会调用此方法。代码首先获取用户的用户名,然后从数据库中查找相应的用户。如果找到用户,它将创建一个 `SimpleAuthenticationInfo` 对象,包含用户对象作为主体(principal)和密码(credentials)。这个对象随后会被Shiro用来进行密码比较和认证过程。 2. **授权方法** (`doGetAuthorizationInfo()`): - 此方法负责确定用户的角色和权限。它根据已认证的用户(principal)来获取其在系统中的角色和权限。对于管理员用户,代码会赋予所有角色和权限。对于普通用户,代码会根据用户关联的角色查询并赋予相应的权限。`SimpleAuthorizationInfo` 对象用于存储这些角色和权限信息。 Shiro框架的其他重要组件包括: - **Subject**:它是与Shiro框架交互的接口,代表当前的用户或实体。所有的安全操作都是通过Subject进行的。 - **SecurityManager**:这是Shiro的中心组件,管理Subject并协调整个框架的运作。尽管我们在代码中直接操作Subject,但实际的安全逻辑是由SecurityManager执行的。 Shiro还支持Web应用的安全性、缓存管理、多线程、测试工具以及RememberMe服务,允许用户在关闭浏览器后仍能保持登录状态。RememberMe功能通常用于提供方便的用户体验,使用户在下次访问时无需重新登录。 通过自定义 Realm 类,Shiro 可以轻松地适应各种用户数据存储结构,这使得它成为一个非常灵活的安全解决方案。在实际项目中,根据需求,可以调整 Realm 的实现以适应不同的认证和授权策略。