session共享

登录缓存清理
缓存更换为redis缓存代码提交
This commit is contained in:
段冬梅
2018-12-16 11:04:25 +08:00
parent 22920b84cc
commit ed45211de9
11 changed files with 310 additions and 82 deletions

View File

@@ -77,14 +77,25 @@
<!-- 定义Shiro安全管理配置 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="systemAuthorizingRealm" />
<!-- <property name="realm" ref="systemAuthorizingRealm" /> -->
<property name="realm" ref="shiroRealm" />
<property name="sessionManager" ref="sessionManager" />
<property name="cacheManager" ref="shiroCacheManager" />
</bean>
<bean id="shiroRealm" class="com.nis.web.security.SystemAuthorizingRealm">
<!-- 启用缓存 -->
<property name="cachingEnabled" value="true"></property>
<!-- 启用身份验证缓存 -->
<property name="authenticationCachingEnabled" value="true"></property>
<!-- 启用授权缓存 -->
<property name="authorizationCachingEnabled" value="true"></property>
</bean>
<!-- 自定义会话管理配置 -->
<bean id="sessionManager" class="com.nis.web.security.SessionManager">
<property name="sessionDAO" ref="sessionDAO"/>
<!-- <property name="sessionDAO" ref="sessionDAO"/> -->
<property name="sessionDAO" ref="redisSessionDAO"/>
<!-- 会话超时时间,单位:毫秒 -->
<property name="globalSessionTimeout" value="${session.sessionTimeout}"/>
@@ -98,22 +109,35 @@
<property name="sessionIdCookieEnabled" value="true"/>
</bean>
<bean id="redisSessionDAO" class="com.nis.web.security.CacheSessionDAO">
<property name="expire" value="${redis.expire}"></property>
<property name="redisManager" ref="redisManager"></property>
<property name="keyPrefix" value="shiro_redis_"></property>
</bean>
<!-- 指定本系统SESSIONID, 默认为: JSESSIONID 问题: 与SERVLET容器名冲突, 如JETTY, TOMCAT 等默认JSESSIONID,
当跳出SHIRO SERVLET时如ERROR-PAGE容器会为JSESSIONID重新分配值导致登录会话丢失! -->
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg name="name" value="nis.session.id"/>
</bean>
<bean id="sessionDAO" class="com.nis.web.security.CacheSessionDAO">
<!-- <bean id="sessionDAO" class="com.nis.web.security.CacheSessionDAO">
<property name="sessionIdGenerator" ref="idGen" />
<property name="activeSessionsCacheName" value="activeSessionsCache" />
<property name="cacheManager" ref="shiroCacheManager" />
</bean>
</bean> -->
<!-- 定义授权缓存管理器 -->
<!-- <bean id="shiroCacheManager" class="com.thinkgem.jeesite.common.security.shiro.cache.SessionCacheManager" /> -->
<bean id="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<!-- <bean id="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
<property name="cacheManager" ref="cacheManager"/>
</bean> -->
<bean id="shiroCacheManager" class="org.crazycake.shiro.RedisCacheManager">
<property name="redisManager" ref="redisManager"/>
</bean>
<bean id="redisManager" class="org.crazycake.shiro.RedisManager">
<property name="host" value="${redis.host}"></property>
<property name="timeout" value="${redis.timeout}"></property>
</bean>
<!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->