在某个请求获取HttpSession时,shiro JSESSIONID被覆盖

在某个请求获取HttpSession时,shiro JSESSIONID被覆盖

业务场景:在用户登录之后,shiro会在cookies中记录自己的sessionid;它对应的key默认是JSESSIONID;然后在某一次请求获取HttpSession(浏览器与服务器交互第一次获取HttpSession);然后在发送一个新的请求就需要重新登录
具体分析:在shiro登录成功之后会默认的给浏览器cookies中写一个sessionid,key是JSESSIONID(shiro与浏览器);然后再第一次获取HttpSession的时候,session是一个空,他回去新建,新建成功之后他也会返回sessionid,key也是JSESSIONID;他就会覆盖掉shiro的JSESSIONID,所以需要重新登录;具体可以看一下request.getSession();源码,还有shiro登录成功之后的具体流程;
修改办法:设置shiro的key为自定义key,我是把设置成了“sid”

@Bean
    public SessionManager sessionManager(){
        CustomSessionManager customSessionManager = new CustomSessionManager();
        customSessionManager.setSessionDAO(sessionDAO());
        //设置登录超时时间
        customSessionManager.setGlobalSessionTimeout(1000*60*60*2);
        //设置自己的cookies里面的sessionid名称
        SimpleCookie sid = new SimpleCookie("sid");
        customSessionManager.setSessionIdCookie(sid);
        return customSessionManager;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值