关闭

JSESSIONID与SESSION

1225人阅读 评论(0) 收藏 举报

用spring security的时候遇到了一个很诡异的问题:

已经登录的用户,而且没有标记remember-me,在重启服务器之后还会显示已经登录状态

这就严重啦,这样子如果要在session中储存用户的信息,以后反复拿出来用的话,这个session在用户登录的时候set用户信息,那重启服务器之后,session中没有这个字段了,但是还是登录了,这就使得有的场景中得不到用户信息

解析一下发送的请求会发现,登录了之后每一个请求都会带有一个cookies,JSEESIONID:"xxxxxxxx"

这个JSESSIONID是服务器给每个用户定义的唯一的ID标识,用这个ID号就可以在SESSION容器中找到请求用户的SESSION了

所以当清空浏览器cookies了之后,就需要重新登录了(因为服务器没有接收到JSESSIONID,也就不能判断用户是否登录)

解决方案:

  1. 在<security:http>里面添加disable-url-rewriting="true"属性,是为了不让URLappend了JSESSIONID
  2. 同时在<security:logout>里面加上invalidate-session="true" delete-cookies="JSESSIONID"   目的是为了,用户退出的时候清空session以及删除JSESSIONID的cookies


查看原文:http://139.129.55.235/2016/05/30/jsessionid%e4%b8%8esession/
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27444次
    • 积分:872
    • 等级:
    • 排名:千里之外
    • 原创:57篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    友情链接
    文章分类
    最新评论