問題
前幾天遇到一個比較奇怪的問題, 一個項目部署多個,端口不同。啟動之后在同一瀏覽器中進行登錄,后一個登錄的會把前一個登錄的擠掉,導致只能登錄一個。
原因
是因為sessionid相同,然后修改了springboot中sessionManager的相關配置,主要是sessionIdCookie中的name。修改之后兩個項目可以同時登錄了。
解決方案
1,
修改每個springboot WEB工程的
application.properties 文件中的
server.session.cookie.name 屬性(如沒有該屬性,則新建)
使該服務器內部署的所有WEB工程的
server.session.cookie.name 各不相同即可,springboot2.0配置可能不同(這個方法在網上找的,並沒有解決我的問題)
2,使用java配置的方式
/** * shiro session的管理 */ @Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setGlobalSessionTimeout(tomcatTimeout * 1000); sessionManager.setSessionDAO(sessionDAO()); sessionManager.setSessionIdCookieEnabled(true); sessionManager.setSessionIdCookie(sessionIdCookie()); Collection<SessionListener> listeners = new ArrayList<SessionListener>(); listeners.add(new BDSessionListener()); sessionManager.setSessionListeners(listeners); return sessionManager; } /** * 設置cookie * @return */ private SimpleCookie sessionIdCookie() { SimpleCookie cookie = new SimpleCookie(); cookie.setName("USERSESSIONID"); cookie.setHttpOnly(true); cookie.setMaxAge(tomcatTimeout * 10); return cookie; }