关于Cookie和Session
来源:3-4 Session的实现原理
natsusora
2019-10-13 21:08:03
请问能不能这样理解:假如用户对登录信息设置了保存7天有效,那么在服务器端会生成一个Session,并将对应的SessionId发送给用户浏览器,并保存在其Cookie中,设置MaxAge为7天。但是对于服务器的Session,并没有这个7天的时效,还是普通的20-30分钟;即便用户保持浏览器不动,过了六天之后再刷新访问相同页面,这时候SessionId还是不变的,但是因为服务器端的Session部分早已过期,所以会无视掉浏览器的SessionId并创建一个新的Session并将其id再次写到浏览器端的Cookie中。(写的过程是直接把原来7天那个未过期的覆盖掉还是再重新写进一个SessionId?)
2回答
同学你好,对登录信息设置了保存7天有效,服务器端的session同样存在一定的时间。当浏览器中的cookie发送Session ID到服务器端,服务器根据这个Session ID从内存或者数据库里面查到对应的数据,实现免登陆的效果。如果服务器端的Session销毁了,浏览器端发送session ID到服务器端无法查找到对应的session,登陆信息7天有效就无法保持,只能重新登录。所以也不会存在将第一个用户的Session分配给第二用户的现象。另外SessionId不能设置存在时间。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
natsusora
提问者
2019-10-13
不知道SessionId是否也可以设置存在时间?
感觉比较奇怪,当用户的Cookie中的SessionId未过期而服务器端的Session已过期时,那么当未过期的Cookie把SessionId发过去给服务器时,会不会产生这样一种现象:存储第一个用户的Session已经过期被释放,然后这个SessionId不幸地被服务器分配给第二个用户,当第一个用户过一段时间又再用这个SessionId去访问服务器时,匹配到了第二个用户的相关信息
相似问题