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> <!--<!–权限配置的时候 ,以前面配置的为标准–>--> /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的配置信息的主要内容,如果未能解决你的问题,请参考以下文章