springmvc整合shiro 会话管理时候报错

李永china 发布于 2016/06/06 20:56
阅读 711
收藏 2

配置代码

<!-- securityManager配置 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="customRealm" />
<!-- 注入缓存管理器 -->
<property name="cacheManager" ref="cacheManager"/>
<!-- 注入session管理器 -->
<property name="sessionManager" ref="sessionManager" />
</bean>
<bean id="customRealm" class="cn.itcast.ssm.shiro.CustomerRealm">
<!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 -->
<property name="credentialsMatcher" ref="credentialsMatcher"/>
</bean>
<!-- 凭证匹配器 -->
<bean id="credentialsMatcher"
class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
<property name="hashAlgorithmName" value="md5" />
<property name="hashIterations" value="1" />
</bean>
<bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager">
    <property name="cacheManagerConfigFile" value="classpath:shiro-ehcache.xml"/>
    </bean>
    <!-- 会话管理器 -->
    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
        <!-- session的失效时长,单位毫秒 -->
        <property name="globalSessionTimeout" value="600000"/>
        <!-- 删除失效的session -->
        <property name="deleteInvalidSessions" value="true"/>
    </bean>


报错信息:

org.apache.shiro.session.UnknownSessionException: There is no session with id [DDCEE1C0E7397040829290946EDB7209


请求一次,地址栏的sessionId就变一次    总是产生不一样的JSESSIONID

有哪位大神能够指点迷津 

加载中
0
leh
leh
换一个shiro版本
李永china
李永china
谢谢 我去试一下
0
一只小桃子
一只小桃子
浏览器f12,看是不是传了DDCEE1C0E7397040829290946EDB7209的cookie,这个cookie什么时候来的。是不是cookie重复了
李永china
李永china
他就是每次请求就会重新产生一个cookie
0
一只小桃子
一只小桃子
地址栏的sessionId就变一次    总是产生不一样的JSESSIONID。我之前整合的时候也碰到这种情况。我的情况是竟然有两个jsessionid的cookie,我关了jsp自动生成session还是不行,清空浏览器所有cookie也不顶用。搞到晚上8、9点还不行。然后就回家了,第二天来重新启动竟然好了……。不过为了保险,我把shiro的cookie的名字改成了shiroId,然后把原生的session停了。
李永china
李永china
对了 哥们 你spring-data-jpa了解么 我配置全局dao总是报错 配置单个dao是可以 好郁闷
一只小桃子
一只小桃子
建议你把ehcache的缓存文件都删了,把浏览器cookie清空,重新部署一下项目
0
李永china
李永china

引用来自“一只小桃子”的评论

地址栏的sessionId就变一次    总是产生不一样的JSESSIONID。我之前整合的时候也碰到这种情况。我的情况是竟然有两个jsessionid的cookie,我关了jsp自动生成session还是不行,清空浏览器所有cookie也不顶用。搞到晚上8、9点还不行。然后就回家了,第二天来重新启动竟然好了……。不过为了保险,我把shiro的cookie的名字改成了shiroId,然后把原生的session停了。
我在会话管理里面配了这三行代码
<property name="sessionDAO" ref="sessionDAO"/>
        <property name="sessionIdCookieEnabled" value="true"/>
        <property name="sessionIdCookie" ref="sessionIdCookie"/>就好了  不知道有没有什么影响
0
一只小桃子
一只小桃子

引用来自“一只小桃子”的评论

地址栏的sessionId就变一次    总是产生不一样的JSESSIONID。我之前整合的时候也碰到这种情况。我的情况是竟然有两个jsessionid的cookie,我关了jsp自动生成session还是不行,清空浏览器所有cookie也不顶用。搞到晚上8、9点还不行。然后就回家了,第二天来重新启动竟然好了……。不过为了保险,我把shiro的cookie的名字改成了shiroId,然后把原生的session停了。

引用来自“李永china”的评论

我在会话管理里面配了这三行代码
<property name="sessionDAO" ref="sessionDAO"/>
        <property name="sessionIdCookieEnabled" value="true"/>
        <property name="sessionIdCookie" ref="sessionIdCookie"/>就好了  不知道有没有什么影响
<bean id="sessionManager"
		class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
		<property name="sessionDAO" ref="sessionDAO" />
		<property name="sessionIdCookie" ref="sessionIdCookie" />
	</bean>
	<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
		<property name="httpOnly" value="true" />
		<property name="name" value="shiroId" />
	</bean>
    <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO">
        <property name="activeSessionsCacheName" value="shiro-activeSessionCache" />
        <property name="cacheManager" ref="cacheManager"></property>
    </bean>



返回顶部
顶部