問題
前幾天遇到一個比較奇怪的問題, 一個項目部署多個,端口不同。啟動之后在同一瀏覽器中進行登錄,后一個登錄的會把前一個登錄的擠掉,導致只能登錄一個。
原因
是因為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;
}

