<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd" default-lazy-init="true"> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="shiroDbRealm" /> <property name="cacheManager" ref="shiroEhcacheManager" /> <property name="sessionManager" ref="sessionManager"></property> </bean> <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="sessionDAO" ref="sessionDAO" /> <property name="sessionValidationScheduler" ref="sessionValidationScheduler" /> <property name="globalSessionTimeout" value="86400000" /> <property name="sessionIdCookie" ref="sharesession" /> <property name="sessionValidationSchedulerEnabled" value="true" /> <property name="deleteInvalidSessions" value="true" /> </bean> <bean id="sharesession" class="org.apache.shiro.web.servlet.SimpleCookie"> <!-- cookie的name,对应的默认是 JSESSIONID --> <constructor-arg name="name" value="SHAREJSESSIONID_PROJECTS" /> <!-- jsessionId的path为 / 用于多个系统共享jsessionId --> <property name="path" value="/" /> <property name="httpOnly" value="true" /> <!-- <property name="domain" value=".nrbang.net" /> --> </bean> <bean id="sessionDAO" class="com.team.security.MCSessionDAO"> <property name="client" ref="memcachedClient"></property> </bean> <bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler"> <property name="interval" value="1800000" /> <property name="sessionManager" ref="sessionManager"></property> </bean> <!-- 用户授权信息Cache, 采用EhCache --> <bean id="shiroEhcacheManager" class="com.team.cache.memcached.MemcachedCacheManager"> <property name="simpleCacheManager" ref="simpleCacheManager"></property> </bean> <bean id="simpleCacheManager" class="com.team.cache.memcached.SimpleCacheManagerImpl"> <property name="memcachedClient" ref="memcachedClient"></property> </bean> <!-- depends-on="resourceOperateDao,operateDao,resourceDao" --> <bean id="chainDefinitionSectionMetaSource" class="com.team.security.ChainDefinitionSectionMetaSource"> <property name="filterChainDefinitions"> <value> /html/**=authc /register=authc /login=authc /logout=logout </value> </property> </bean> <!-- 自定义的Filter --> <!-- 自定义的Realm --> <bean id="shiroDbRealm" class="com.team.security.ShiroDbRealm"> <!-- <property name="client" ref="xMemcachedClient" /> --> <!-- depends-on="roleDao,resourceOperateDao,operateDao,resourceDao,userDao,xMemcachedClient" --> </bean> <!-- Shiro Filter --> <bean id="shiroFilter" class="com.team.security.EcShiroFilterFactoryBean"> <!-- shiro的核心安全接口 --> <property name="securityManager" ref="securityManager" /> <!-- 要求登录时的链接 --> <property name="loginUrl" value="/" /> <!-- 登陆成功后要跳转的连接 --> <property name="successUrl" value="/index" /> <!-- 未授权时要跳转的连接 --> <property name="unauthorizedUrl" value="/view/error/error.jsp" /> <!-- shiro连接约束配置,在这里使用自定义的动态获取资源类 --> <property name="filterChainDefinitionMap" ref="chainDefinitionSectionMetaSource" /> </bean> <!-- 保证实现了Shiro内部lifecycle函数的bean执行 --> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager" /> </bean> </beans>