zoukankan      html  css  js  c++  java
  • 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;
        }
    

  • 相关阅读:
    Spring读取properties内容
    SpringBoot全局异常处理
    Hibernate入门
    Oracle查询表及注释
    MySQL重复与不重复问题
    IDEA中other settings不见了
    01程序员修炼之道
    团队冲刺(四)
    单词字母查询频率
    学习进度(9)
  • 原文地址:https://www.cnblogs.com/chancy/p/10730694.html
Copyright © 2011-2022 走看看