Shiro内置过滤器详解:权限分配与授权机制

需积分: 45 6 下载量 184 浏览量 更新于2024-07-14 收藏 670KB PPT 举报
"本文主要介绍了Apache Shiro框架中的内置过滤器以及权限分配和授权机制,同时概述了Shiro的核心组件和工作流程。" 在Apache Shiro框架中,内置过滤器是实现权限控制的关键部分。例如,`rest` 过滤器可以根据请求的方法,将规则如 `/admins/user/**=authc,rest[user]` 视同于 `/admins/user/**=authc,perms[user:method]`,这意味着只有当用户具有`user:method`权限时,才能访问该资源。`port` 过滤器则用于限制特定端口的访问,如 `/admins/user/**=authc,prot[8081]`,如果请求的URL端口不是8081,Shiro会重定向到指定的服务器地址。`perms` 过滤器如 `/admins/user/**=authc,perms[“user:add:*”]`,用于确保用户具有添加所有类型用户(`user:add:*`)的权限。 Shiro框架的核心组件包括: 1. **Subject**:代表“当前操作用户”,是Shiro与应用程序交互的主要接口,用于执行认证和授权操作。 2. **SecurityManager**:作为核心组件,它是Shiro的门面,负责管理和协调其他组件,提供全面的安全管理服务。 3. **Realm**:作为数据源,Shiro通过Realm获取和验证用户的身份及权限信息。每个Realm对应一个特定的数据源,例如数据库或LDAP。 Shiro的架构还包括其他主要组件: - **Authenticator**:负责验证用户身份,它接收AuthenticationToken并确认用户的真实性。 - **Authorizer**:处理访问控制,确定用户是否可以进行特定操作。 - **SessionManager**:管理用户的会话状态。 - **CacheManager**:提供缓存支持,提高性能。 Shiro的认证过程分为以下几个步骤: 1. 应用程序创建一个表示用户身份的AuthenticationToken实例,并调用Subject的login方法。 2. Subject实例会委托给SecurityManager进行登录操作。 3. SecurityManager使用内部的Authenticator,通常是ModularRealmAuthenticator,对Token进行处理。 4. ModularRealmAuthenticator会遍历所有配置的Realm,依据AuthenticationStrategy进行多Realm认证。 5. Realm逐一验证用户信息,AuthenticationStrategy将整合各个Realm的结果。 6. 如果只有一个Realm,它会被直接调用,无需额外的认证策略。 通过这样的流程,Shiro提供了灵活且可扩展的安全管理框架,方便开发者实现权限分配和授权,确保应用的安全性。在实际应用中,可以根据需求配置不同的过滤器和 Realm,实现细粒度的权限控制。