Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。
Shiro的入口其实是一个Filter,这个Filter在spring中配置并受到spring容器的管理,既然受spring管理,那它就可以引用spring中的其他bean对象了。Shiro Filter通过DelegatingFilterProxy类对其进行代理。
以下是关于DelegatingFilterProxy的详细介绍:
使用DelegatingFilterProxy可以将其所代理的filter作为spring容器的bean,使filter受到spring的管理,这样filter就可以引用spring里定义的其他bean了。
DelegatingFilterProxy作为标准的Servlet2.3 Filter的代理,但是Filter的实际工作是通过将任务委派给spring管理的而且实现了Filter接口的bean来完成的。
web.xml通常会包括DelegatingFilterProxy的定义,其中的filter-name项会对应spring容器中的一个bean的名字(也可以使用targetBeanName属性进行指定)。所有的调用请求都会首先发送到这个filter代理中去,然后再委派到spring容器中的这个bean,当然,这个bean必须要实现标准的Servlet 2.3 Filter 接口。
Shiro在web.xml和spring中的配置如下:
在web.xml中的配置:
<filter> <filter-name>shiroFilter</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> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在spring中的配置:
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login.action" /> <property name="successUrl" value="/index.jsp" /> <property name="filters"> <map> <entry key="authc" value-ref="formAuthenticationFilter"/> <entry key="resourceAuth" value-ref="resourceAuthenticationFilter"/> </map> </property> <property name="filterChainDefinitions"> <value> /login.action = authc /logout.action = logout /common/** = anon /** = user,resourceAuth </value> </property> </bean>
Servlet Filter 接口中定义的生命周期函数(init和destroy等)默认不会被target bean自己执行,而是由spring容器执行来管理这个bean的生命周期。如果将名为"targetFilterLifecycle"的filter init-param参数设定为"true",则target bean的Filter.init和Filter.destroy的生命周期函数的调用就可以由servlet container来执行了。
相关推荐
同时,还需要在Web应用的入口点或者Servlet中初始化Shiro的SecurityManager。 总结来说,这个"shiro登录/退出demo(web应用)"项目提供了一个实践Shiro安全框架的实例,涵盖了从用户登录到权限控制的全过程。通过学习...
总的来说,实现"shiro管理多登录入口配置,手机端登录与网页端登录"需要对 Shiro 的 Realm、过滤器和配置有深入理解,以及根据应用场景定制相应的登录验证流程。正确配置后,Shiro 可以有效地管理和保护不同入口的...
本项目是一个基于SpringBoot、Shiro和Layui技术栈构建的...此项目不仅提供了一个实际运行的商城系统,同时也为学习者提供了深入了解SpringBoot、Shiro和Layui集成应用的机会,有助于提升开发者在Web开发领域的技能。
它集成了大量常用的第三方库配置,如数据访问、安全、WebSocket等,使得开发者能够快速搭建功能完整的Web应用。Spring Boot的核心特性包括自动配置、内嵌式Web服务器(如Tomcat)和独立运行的Spring应用程序。 ...
- **Web集成**:Shiro提供了Filter来方便地与Web应用集成,如LoginCheckFilter、RememberMeFilter等。 - **缓存管理**:可以使用缓存来提高性能,避免频繁查询数据源。 - **并发支持**:Shiro支持多线程环境下的...
- **ShiroFilter入口**:ShiroFilter是Shiro与Web应用交互的关键点,它控制着哪些URL需要进行安全检查。 - **Web INI配置**:类似于普通的INI配置,但在Web环境中会有特殊的要求和配置项。 #### 八、拦截器机制 - *...
Apache Shiro 和 SpringMVC 的整合示例是一个用于构建安全Web应用的常见实践。这个示例项目不依赖于任何数据库,所有的实现都是基于静态代码,这使得它成为一个快速理解和学习Shiro安全框架的理想起点。 Apache ...
本项目"shiro_springmvc_demo"显然是一个基于Shiro和SpringMVC的实战示例,旨在帮助开发者理解如何将Shiro集成到SpringMVC应用中,实现用户认证和授权。 在SpringMVC框架中,Shiro可以帮助我们处理用户登录、权限...
4. **Web集成**:Shiro可以轻松地与SpringMVC集成,通过Filter配置实现URL级别的访问控制,为Web应用提供安全入口。 **SpringMVC与Shiro的整合** 1. **配置Shiro Filter**:在SpringMVC的web.xml中配置Shiro的...
通过配置 web.xml 或 Spring MVC,可以将Shiro整合到Web应用中。 7. **测试支持**:Shiro 提供了测试类,方便在单元测试中模拟 Subject 和 Realm,确保安全逻辑的正确性。 8. **生命周期管理**:Shiro 提供了对...
6. **微信小程序**: 除了Web应用,项目还包含微信小程序的部分,这表明系统可能通过微信小程序提供移动端的访问入口。微信小程序是一种轻量级的应用开发平台,适用于开发无需下载安装即可使用的应用,方便用户在微信...
ShiroFilter是Shiro与Web应用集成的重要组成部分,用于拦截请求并执行相应的安全操作。通过配置ShiroFilter,可以指定不同路径的过滤规则,如登录页面、未授权页面等。 #### 7.3 Web INI配置 在Web应用中,Shiro的...
本文将详细介绍如何在Spring MVC项目中集成并使用Apache Shiro进行身份验证和授权。 #### Apache Shiro简介 Apache Shiro 是一个强大且易用的Java安全框架,可以提供认证、授权、加密和会话管理功能,同时具备良好...
- **ShiroFilter**:作为 Web 应用的入口,用于拦截请求并进行权限检查。 - **Web INI 配置**:配置 ShiroFilter 的规则和过滤器。 #### 八、拦截器机制 - **概念**:通过拦截器对请求进行处理,例如权限检查、...
2. **MySQL**:这是一个开源的关系型数据库管理系统,常用于存储Web应用的数据。 3. **MyBatis**:这是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置...
5. **Web Support(Web支持)**: 提供简单的Web集成方案,使得Shiro可以轻松地与Web应用结合。 6. **Caching(缓存)**: 缓存用户信息、角色和权限等数据,以提高系统的响应速度。 7. **Concurrency(并发支持)**: ...
Apache Shiro 和 SpringMVC 的整合是Web应用中常见的安全框架组合,主要用于实现用户认证、授权和会话管理。在本示例中,"shiro+springmvc整合demo" 提供了一个基于SpringMVC和Apache Shiro的完整演示,同时结合了...