u014794644
瓦史托德
2018-06-26 10:26
采纳率: 60%
浏览 1.9k
已采纳

javaWeb登录session问题

不是关闭浏览器 会话cookie会被删除吗 我试了谷歌和火狐 为什么关了浏览器 重开还是免登录?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • Mr_aaao
    JAVA大贼船 2018-06-27 01:45
    已采纳

    这个原因是cookie的生命周期问题,如果设置cookie.setMaxAge(-1),那么关闭浏览器,cookie就没了,sessionid也就没了,当你再次访问服务器的时候,服务器就会创建一个新的session会话,就不会有你上述的免登录状态。如果cookie.setMaxAge(大于0),cookie就不会随关闭浏览器而删除,它会随你设置的时间而生命结束,在这种情况下,当你去访问服务器的时候,浏览器会把这个cookie的sessionid发送到服务器,那么服务器会根据sessionid找到跟它绑定的session对象,那么这个session会话就包括了你上一次访问的内容,所以你会看到有免登录的状态。

    点赞 评论
  • AHuqihua
    胡其先生 2018-06-26 10:36

    session是会关闭的,一个浏览器访问一个Web项目, 后来打开的页面会覆盖前面的session的value的值, 你关闭浏览器后session肯定会关闭的
    你试一试用谷歌登入后,再用火狐访问那个页面是不是也直接跳进去,如果是, 就是你代码有问题

    点赞 评论
  • ding1979
    ding1979 2018-06-26 10:36

    因为session的机制其实就是cookies一样的(叫 session id ), ,在浏览器(客户端)里是存着这个的,你没清缓存之前或是服务器这边没有清掉
    ,其实还是可以免登录 的, 具体可以去了解一下http 1.1的协议

    点赞 评论
  • baidu_41655959
    Mr_-King 2018-06-26 11:01

    调用相应的方法可以清除session 另外 session对应的是一次对话,浏览器关闭后,sesssion也就退出了

    点赞 评论
  • qq_41182061
    qq_41182061 2018-06-26 11:26

    Session和Cookie不同,session是保存在服务器端的由SessionID来标识,当你把浏览器关闭的时候,Session也会随着被关闭,你重新启动浏览器后会另外创建一个Session
    而Cookie是保存在客户端的,其是目的为了减轻服务器端的压力,一般设得有生存时间,只要服务器一直开着,在其生存时间内,不管你是重启还是打开新的浏览器,Cookie都不会变

    点赞 评论
  • qq_41641324
    乂夜逅秋风 2018-06-26 12:08

    按照你说的这个,应该是你设置了cookie的生命周期.cookie默认的生命周期是一次会话.如果没有设置cookie的生命周期,那么cookie是存在内存中的,每次关闭浏览器后cookie都会消除.反之,如果你设置了cookie的生命周期,那么cookie就保存在硬盘上了.如果你的浏览器没有设置每次关闭都自动清除cookie的话,那么你再打开浏览器cookie还存在的.

    点赞 评论
  • qq_27848369
    hot2dog 2018-06-26 12:21

    你说的 很对,关闭浏览器 sessionStrory 确实被清除, 但是 你登录的信息 ,有可能是 保存在 cookie 或 localStroery 中的啊, 看代码中怎么写了。

    若是 保存在 cookie 或 localStroery 中的, 再次打开浏览器,免登陆,在正常不过嘛。。。关键看代码怎么写

    点赞 评论
  • Lei_Da_Gou
    Lei_Da_Gou 2018-06-26 12:55

    session会话默认是30分钟,调用invalidate()方法后session失效,30分钟后session失效,清除浏览器记录session失效。否则session就一直存在。

    点赞 评论
  • Annjeff0721
    Annjeff0721 2018-06-27 01:15

    session是有一定的声明周期,需要时还可以固化在本地文件。对生命周期可以进行设定。

    点赞 评论

相关推荐