spring集成shiro的配置信息

Posted 清酒

tags:

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

一.依赖的引入

<dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-core</artifactId>
      <version>1.3.2</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-web</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.shiro</groupId>
      <artifactId>shiro-ehcache</artifactId>
      <version>1.3.2</version>
    </dependency>

二.spring的主配置文件中的配置

1.配置自定义realm,class指的是自定义realm的全限定名;

   <!--配置自定义realm-->
    <bean id="jdbcRealm" class="com.woniu.ssm.realms.ShiroRealm"></bean>

2.配置缓存,需要从shiro缓存包中导入类,property引用resources中的ehcache文件

 <!-- 配置缓存 -->
    <bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
        <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"/>
    </bean>

3.配置shiro核心,可以在里面配置各种属性(注意引用的自定义realm要实现父类方法,不然会报错)

    <!-- shiro的核心配置 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="cacheManager" ref="cacheManager"/>
        <property name="realm" ref="jdbcRealm"/><!--ShiroRealm一定要实现抽象方法,不然一直爆红-->
        <!--<property name="rememberMeManager" ref="rememberMeManager"></property>-->
    </bean>

4.配置shro的生命周期

   <!--生命周期bean  自动调用在spring IOC容器中 shiro bean的生命周期方法 -->
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
    <!--操作shiro的注解  必须配置 生命周期bean-->
    <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>

5.配置过滤器

 <!-- 配置shiroFilter id必须和web.xml文件中 配置的shiro过滤器 名字一致-->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager"/>
        <property name="loginUrl" value="/jsp/login.jsp"/>
        <property name="successUrl" value="/jsp/success.jsp"/>
        <property name="unauthorizedUrl" value="/jsp/unauthorized.jsp"/>
        <!--
            配置拦截的资源  哪些资源 通过什么方式 才可以访问
            anon :可以匿名访问
            authc :需要认证访问 ,即是需要登录
            不配置的 就是可以匿名访问
         -->
        <property name="filterChainDefinitions">
            <value>
                <!--&lt;!&ndash;权限配置的时候 ,以前面配置的为标准&ndash;&gt;-->
                /jsp/login.jsp = anon
                /user/login = anon
                <!--/jsp/list.jsp = authc-->
                <!--/jsp/user.jsp = roles[commonsAdmin]-->
                <!--/jsp/admin.jsp = roles[systemAdmin]-->
                <!--/index.jsp = anon-->
                <!--/user/test? = anon-->
                <!--/user/exit = logout-->
                <!--/jsp/me.jsp = user-->
                <!--# allow WebStart to pull the jars for the swing app:-->
                <!--# everything else requires authentication:-->
                /** = authc
            </value>
        </property>
    </bean>

三.web.xml文件中设置过滤器

 <!--shiro的过滤器-->
  <filter>
    <filter-name>shiroFilter</filter-name><!--通过web.xml找到bean.xml文件中的shiroFilter-->
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetFilterLifecycle</param-name>
      <param-value>true</param-value>
    </init-param>
    <!--通过 DelegatingFilterProxy 中targetBeanName的值 到spring容器中,寻找ShiroFilterFactoryBean 的对象 -->
  </filter>

<!--过滤器的映射通过shiroFilter从容器中找到这个类-->
  <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

以上是关于spring集成shiro的配置信息的主要内容,如果未能解决你的问题,请参考以下文章

Shiro学习(12)与Spring集成

Shiro:Spring-boot如何集成Shiro(上)

解决Spring Boot集成Shiro,配置类使用Autowired无法注入Bean问题

spring中集成shiro进行安全管理

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

Shiro与Spring集成