zoukankan      html  css  js  c++  java
  • springboot集成shiro的session污染问题

    问题起因是这样的,有两套系统,系统a和系统b。两套系统均使用shiro做的权限管理,之前部署在两台机器上。使用浏览器打开a系统后另开页签打开b系统,互不干扰都能正常使用,后因业务迁移,两套系统部署到了一个机器上,再使用浏览器打开a系统后再开b系统。问题就出现了,之前a系统要求重新登录。

            原因分析,shiro是基于session会话的权限管理,那么浏览器打开一次就会产生一个session,在session活跃期间,只要你浏览器不关闭,session信息是一直有效的。其session信息是写在cookie里的。如果你是两个域的话,session信息不回互相干扰。但如果你是一个域问题就来了,a登录后session信息会写入浏览器cookie里,当b登录时session信息更新此域的信息。a原始登录的session信息就会失效。因此b登录后,会挤占a的session信息

     原因分析明白,如何解决,其实很简单:

      在shiro配置文件的sessionManager()方法里修改session的key值

    @Bean
        public DefaultWebSessionManager sessionManager() {
            DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
            Cookie cookie=sessionManager.getSessionIdCookie();
            cookie.setName("newsessid");
            return sessionManager;
    	
        }
    

      

  • 相关阅读:
    poj 3253超时
    poj 3617输出格式问题
    dfs的返回条件
    hdu1010感想
    2018.7.19训练赛总结
    2018.7.12训练赛 -G
    汇编实验16 编写包含多个功能子程序的中断例程——浅谈直接地址表
    新的一年来了,先看一看自己的编程能力吧!
    汇编实验15:安装新的int 9中断例程
    汇编实验14:访问CMOS RAM
  • 原文地址:https://www.cnblogs.com/yaomajor/p/9617426.html
Copyright © 2011-2022 走看看