spring 集成 shiro安全框架

匿名 (未验证) 提交于 2019-12-02 23:59:01

基于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这个参数配置的路径进行访问。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!