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

  • 相关阅读:
    python 有关datetime时间日期 以及时间戳转换
    开园杂记
    vue beforeRouteEnter 注意点
    html 头像裁剪框
    window server服务器配置ftp服务
    js 使用 delete 删除对象的属性
    win 自带的截屏工具
    idea 配置新建类自动加注解
    mysql varchar 使用唯一索引时无法区分大小写 可以使用varbinary
    在 laradock 环境中使用 laravel-swoole 加速你的 laravel 应用
  • 原文地址:https://www.cnblogs.com/chancy/p/10730694.html
Copyright © 2011-2022 走看看