shiro登錄,多個項目session被覆蓋問題

有兩個項目都使用了shiro權限校驗框架,且部署在一臺服務器下兩個Tomcat中。
測試時發現在一個瀏覽器中,登錄A後,再登錄B。這時A失效,需要重新登錄,且登錄後B又失效。

查看log後發現是cookieId相同的原因。

先排查tomcat。
在tomcat下的server.xml中添加sessionCookieName,A項目設置爲A_SESSION,B項目設置爲B_SESSION。測試後發現問題依然存在。

<Context path="" docBase="webapp" debug="0" reloadable="false" sessionCookiePath="/" sessionCookieName="A_SESSION"/>

說明session不是由tomcat管理的,再排查shiro配置文件。發現可以設置sessionIdCookie.name,設置後重啓,問題解決。
配置如下:

<!-- session管理類 -->
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <property name="sessionDAO" ref="sessionDAO"/>
    <!-- session過期時間 -->
    <property name="globalSessionTimeout" value="1800000"/>
    <!-- cookie名稱 -->
    <property name="sessionIdCookie.name" value="managerid"/>
    <!-- cookie生效路徑 -->
    <property name="sessionIdCookie.path" value="/"/>
</bean>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章