apache shiro 是一个安全认证框架,和 spring security 相比,在于他使用了比较简洁易懂的认证和授权方式。其提供的 native-session(即把用户认证后的授权信息保存在其自身提供Session 中)机制,这样就可以和 HttpSession、EJB Session Bean 的基于容器的 Session 脱耦,到和客户端应用、Flex 应用、远程方法调用等都可以使用它来配置权限认证。 在exit-web-framework 里的vcs-admin 例子用到该框架,具体使用说明可以参考官方帮助文档。在这里主要讲解如何与 spring 结合、动态创建filterchaindefinitions、以及认证、授权、和缓存处理。 Apache Shiro 是一个轻量级的安全管理框架,与 Spring Security 相比,它的认证和授权流程更为简单易懂。Shiro 提供了原生会话(native-session)机制,允许在不依赖容器的 Session 实现情况下,存储和管理用户的认证信息,这使得它能很好地应用于各种场景,包括 Web 应用、Flex 应用、远程服务调用等。 在整合 Shiro 和 Spring 的过程中,首先需要在 `web.xml` 文件中配置 Spring 上下文加载器和 Shiro 安全过滤器。例如,设置 `contextConfigLocation` 参数来指定 Spring 应用上下文配置文件的位置,并使用 `DelegatingFilterProxy` 作为 Shiro 过滤器,确保过滤器生命周期与 Spring 管理的 bean 生命周期同步。 ```xml <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/applicationContext-shiro.xml</param-value> </context-param> <filter> <filter-name>shiroSecurityFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> ``` 接着,在 Spring 的配置文件 `applicationContext-shiro.xml` 中,定义 Shiro 的核心组件,如 SecurityManager,以及相关过滤器链的配置。SecurityManager 是 Shiro 的核心接口,负责整个系统的安全管理。例如: ```xml <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <!-- 配置 Realm,负责用户身份验证和权限授权 --> <property name="realm" ref="myRealm" /> <!-- 其他配置项... --> </bean> <bean id="myRealm" class="com.example.MyRealm"> <!-- Realm 的实现,包括认证和授权逻辑 --> </bean> ``` Shiro 过滤器链(filter chain)定义了不同 URL 请求应该如何进行安全控制。例如,你可以配置哪些 URL 需要用户登录(authc),哪些资源可以匿名访问(anon),或者定义特定的过滤器规则: ```xml <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login" /> <property name="successUrl" value="/index" /> <property name="unauthorizedUrl" value="/unauthorized" /> <property name="filterChainDefinitions"> <value> /login = authc /logout = logout /resource/** = anon </value> </property> </bean> ``` 认证和授权是 Shiro 的两个核心功能。认证是指验证用户的身份,通常通过用户名和密码的匹配来完成。Shiro 的 `Subject` 接口提供了认证操作,而 Realm 负责从数据源获取并验证这些信息。授权则是确定用户是否有访问特定资源的权限,Shiro 通过 Role 和 Permission 机制实现这一功能。 在动态创建过滤链方面,Shiro 提供了 `FilterChainResolver` 接口,允许你在运行时根据需求动态地构建过滤链。这在处理复杂的权限控制和多租户场景时非常有用。 缓存处理是提高性能的重要环节。Shiro 支持缓存用户权限信息,减少对数据库的频繁查询。可以通过集成缓存管理器,如 EhCacheManager 或 RedisCacheManager,来实现这一步。 Apache Shiro 和 Spring 的整合为开发者提供了灵活且易于理解的安全管理解决方案。通过配置 Shiro 过滤器链,我们可以控制对 Web 应用中不同 URL 的访问权限,同时 Shiro 的认证和授权机制使得权限管理变得简单。此外,动态过滤链和缓存处理进一步提高了系统性能和用户体验。
剩余13页未读,继续阅读
- 粉丝: 2072
- 资源: 4254
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- lanchaoHunanHoutaiQiantai
- (177377030)Python 爬虫.zip
- (177537818)python爬虫基础知识及爬虫实例.zip
- 自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制 matlab与simulink联合仿真,纵向控制已经做好油门刹
- (178199432)C++实现STL容器之List
- (178112810)基于ssm+vue餐厅点餐系统.zip
- 两相步进电机FOC矢量控制Simulink仿真模型 1.采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制~ 2.转速电流双闭环控制,电流环采用PI控制,转速环分别采用PI和
- VMware虚拟机USB驱动
- Halcon手眼标定简介(1)
- (175128050)c&c++课程设计-图书管理系统