Shiro入门教程:配置BosRealm实现认证与授权

需积分: 10 6 下载量 124 浏览量 更新于2024-08-18 收藏 1.33MB PPT 举报
"配置bosRealm-shiro使用规范" Apache Shiro是一个功能强大的安全框架,用于处理身份验证、授权、会话管理和加密等安全相关任务。它以其简洁的配置和易扩展性而著称。在Shiro中,有四个核心概念:身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)。 在Shiro的配置中,`BosRealm` 类是自定义的 Realm 实现,这是Shiro中进行身份验证和授权的关键组件。`BosRealm` 扩展了 `AuthorizingRealm` 类,该类是Shiro提供的基础 Realm 类,用于授权和身份验证。 `doGetAuthenticationInfo` 方法是认证方法,当用户尝试登录时被调用。在这个例子中,它接收 `AuthenticationToken` 对象,通常是 `UsernamePasswordToken`,从中获取用户名。然后查询数据库获取对应的用户,如果找不到用户则返回 `null` 表示认证失败。如果找到用户,它会创建一个 `SimpleAuthenticationInfo` 对象,包含用户对象作为主体(principal)和密码作为凭据(credentials),并返回这个对象供Shiro进行下一步的密码验证。 `doGetAuthorizationInfo` 方法是授权方法,用于确定用户可以访问哪些资源。在这个实现中,`Subject` 对象(代表当前登录用户)被用来获取用户信息,然后根据用户的角色和权限来填充 `SimpleAuthorizationInfo`。对于管理员,查询所有角色和权限赋予用户;对于普通用户,只赋予其对应的角色及其权限。 Shiro框架提供了Web支持、缓存功能、并发控制、测试工具,以及如“RememberMe”服务等功能。RememberMe服务可以让用户在下次访问时无需重新登录,提高了用户体验。 `Subject` 是Shiro中的核心接口,它是与系统交互的安全实体,可以是实际的用户或代表用户的代理。所有的Subject实例都必须与一个`SecurityManager` 关联。`SecurityManager` 负责协调Shiro的各个组件,并且在运行时,通过Subject与用户进行交互,实际上是在与SecurityManager交互。 Shiro通过自定义 Realm 类实现业务逻辑与安全策略的解耦,使得在实际应用中可以根据需求灵活配置和扩展。在`BosRealm` 中,我们看到了如何集成DAO层,通过查询数据库来获取用户信息和权限,这在实际的Web应用中是非常常见的做法。