基于xml 配置文件集成
1. web.xml 文件
<!-- 配置Shiro安全过滤器 --> <filter> <filter-name>shiroFilter</filter-name> <!-- 此类由spring-web 提供 --> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <!-- 这个参数名在DelegatingFilterProxy中定义 --> <param-name>targetBeanName</param-name> <!-- 这个值在spring-shiro.xml配置文件中定义 --> <param-value>shiroFilterFactory</param-value> </init-param> </filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
shiro 的配置文件
spring-shiro.xml
<!-- 配置SecurityManager对象,(Shiro框架核心,负责调用相关组件,实现 用户身份认证,缓存,会话管理等功能 --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="Realm" ref="shiroUserRealm"></property> </bean> <!-- 配置ShiroFilterFactoryBean对象 (Shiro中会通过很多过滤器对WEB请求做预处理 ,这些过滤器的创建 底层设计了一个工厂类--> <bean id="shiroFilterFactory" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <!-- 注入securityManager对象 --> <property name="SecurityManager" ref="securityManager"></property> <!-- 配置登录页面 --> <property name="LoginUrl" value="/doLoginUI.do"></property> <!-- 过滤给则(哪些资源允许匿名访问,哪些资源需要授权访问) anon:允许匿名访问 authc需要授权访问 --> <property name="FilterChainDefinitionMap"> <map> <entry key="/bower_components/**" value="anon"></entry> <entry key="/build/**" value="anon"></entry> <entry key="/dist/**" value="anon"></entry> <entry key="/plugins/**" value="anon"></entry> <entry key="/doLogin.do" value="anon"></entry> <entry key="/**" value="authc"></entry><!-- 必须认证 --> </map> </property> </bean>
流程解析:
当客户端访问服务器时,DelegatingFilterProxy 对象会拦截所有的请求路径,并把它交给ShiroFilterFactoryBean对象处理,ShiroFilterFactoryBean对象中注入了SecurityMananger对象,负责调用相关组件,实现用户身份认证,缓存,会话管理等功能。
ShiroFilterFactoryBean对象中还配置了FilterChainDefinitionMap这个参数,这个参数其实也相当于一个过滤器,他定义了哪些资源外部可以直接进行访问,哪些资源需要认证之后才能访问。ShiroFilterFactoryBean对象还对LoginUrl这个参数进行了设置,这个参数主要意义为:FilterChainDefinitionMap拦截的请求,直接重定向到LoginUrl这个参数配置的路径进行访问。
来源:博客园
作者:我爱si搬砖
链接:https://www.cnblogs.com/gxlaqj/p/11483000.html