springboot+shiro 一個項目部署多個,session名沖突問題


問題

前幾天遇到一個比較奇怪的問題, 一個項目部署多個,端口不同。啟動之后在同一瀏覽器中進行登錄,后一個登錄的會把前一個登錄的擠掉,導致只能登錄一個。

原因

是因為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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM