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;
        }
    

  • 相关阅读:
    做一个假文件上传按钮
    说说正则表达式的exec方法
    ES6快到碗里来---一个简单的爬虫指南
    Vue.js之组件(component)
    分享一些求职上的坑
    hexo 静态页面生成后页面打不开的问题
    todolist增加markdown模块
    说说看不懂时该怎么办
    markdown语法简介
    vue.js过渡效果之--javascript钩子
  • 原文地址:https://www.cnblogs.com/chancy/p/10730694.html
Copyright © 2011-2022 走看看