spring 集成shiro 之 自定义过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 集成shiro 之 自定义过滤器相关的知识,希望对你有一定的参考价值。

在web.xml中加入

   <!-- Shiro配置 -->    
  <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>

在项目 pom.xml中引入需要的依赖包

<!-- Spring 整合Shiro需要的依赖 -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.2.1</version>
        </dependency>

 

 

新建文件 shiro-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/util/spring-util-3.0.xsd">
    <description>Shiro 配置</description>
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager" />
        <property name="loginUrl" value="/login.jsp" />
        <property name="successUrl" value="/login.jsp" />
        <property name="unauthorizedUrl" value="/error/noperms.jsp" />
        <property name="filterChainDefinitions">
            <value>
                /login.jsp* = anon
                /login.do* = anon
                /index.jsp*= anon
                /error/noperms.jsp*= anon
                /*.jsp* = authc
                /*.do* = authc
            </value>
        </property>
    </bean>

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <!--设置自定义realm -->
<!--         <property name="realm" ref="monitorRealm" /> -->
    </bean>

    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />

    <!--自定义Realm 继承自AuthorizingRealm -->
<!--     <bean id="monitorRealm" class="com.shiro.service.MonitorRealm"></bean> -->
    <!-- securityManager -->
    <bean
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="staticMethod"
            value="org.apache.shiro.SecurityUtils.setSecurityManager" />
        <property name="arguments" ref="securityManager" />
    </bean>

    <!-- Enable Shiro Annotations for Spring-configured beans. Only run after -->
    <!-- the lifecycleBeanProcessor has run: -->
    <bean
        class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
        depends-on="lifecycleBeanPostProcessor" />
    <bean
        class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager" />

    </bean>

</beans>

 获取保存的session 信息

Subject subject = SecurityUtils.getSubject();
         Object staffInfo = subject.getSession().getAttribute("user");

 

完整项目下载地址:http://url.cn/29TVHdz

以上是关于spring 集成shiro 之 自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

shiro原理之过滤器

添加自定义过滤器 Apache Shiro + Spring Boot

Spring Boot环境下自定义shiro过滤器会过滤所有的url的问题

ShiroApache Shiro架构之身份认证(Authentication)

细说shiro之自定义filter

shiro实战系列(十五)之Spring集成Shiro