Apache Shiro入门:配置jdbcRealm详解

需积分: 12 3 下载量 6 浏览量 更新于2024-07-13 收藏 1.3MB PPT 举报
本文档是关于Apache Shiro的入门学习,特别是如何配置JdbcRealm以实现基于数据库的身份验证和授权。 Apache Shiro是一个全面的安全管理框架,提供了用户身份验证、授权、会话管理和加密等功能。它能简洁地处理各种安全需求,如验证用户身份、执行访问控制、管理会话以及实现加密操作。Shiro适用于各种环境,包括Web应用,并支持多种数据源,具备单点登录(SSO)和“RememberMe”服务。 Shiro的核心组件包括: 1. **身份验证 (Authentication)**:验证用户身份,即“登录”过程。 2. **授权 (Authorization)**:分配角色和权限,决定用户可以访问哪些资源。 3. **会话管理 (Session Management)**:允许跨平台的会话控制,例如在CS(客户端-服务器)应用程序中使用会话。 4. **加密 (Cryptography)**:简化复杂的密码加密操作。 Shiro还提供了额外的扩展功能,如Web支持、缓存、并发控制、测试工具、"RunAs"功能(模拟用户身份)以及“RememberMe”服务。 在配置JdbcRealm时,我们需要定义以下几个关键属性: - **dataSource**:设置数据源,用于连接到数据库。 - **authenticationQuery**:指定用于验证用户密码的SQL查询,这里的示例是根据用户名查找密码。 - **userRolesQuery**:用于获取用户角色的SQL查询,通常根据用户名查找关联的角色。 - **permissionsQuery**:查询用户权限的SQL语句,根据角色名获取权限列表。 - **permissionsLookupEnabled**:启用权限查找,确保在运行时可以动态获取权限。 - **saltStyle**:设置盐值策略,这里是"No_Salt",表示不使用盐值进行加密。 - **credentialsMatcher**:设置凭证匹配器,这里引用了`hashedCredentialsMatcher`,用于匹配存储在数据库中的哈希密码。 配置完成后,Shiro会通过SecurityManager协调各个组件工作,Subject作为与Shiro交互的接口,代表了当前操作的实体(通常是用户)。实际使用中,我们主要通过Subject进行操作,而SecurityManager则在幕后管理所有细节。通过这种方式,Shiro为开发者提供了简单易用的安全管理机制。