使用ajax登录的时候设置session,刷新页面后session丢失

session是什么?

直译为“会话”,是服务端为跟踪用户而制定的一种机制,即每一个用户访问服务端的时候都会生成一个唯一的session标识,这个标识让服务端知道是哪一个用户在访问。而每一次创建session的时候,实际上服务端都会对客户端写入一个cookie标识,这个cookie标识用于下次请求的时候认证已存在的session,告诉服务端,还是这个用户在访问。

但是session还有一种机制:URL重写,即每一次访问的时候都会在URL后面加上一个诸如sid=xxxx的参数用来跟踪session,服务端以此来识别用户,只要当前session被创建过了,那么就能跟sid的值对应上从而成功识别用户

问题来了!

还是ajax惹的祸

因为使用ajax登录,服务端无法在生成session的时候为客户端写入cookie,所以刷新页面的时候无法带入cookie去访问服务端,所以导致session认证失败(就像这个用户还是第一次访问的样子),并且因为是ajax访问,访问的地址是:localhost:8080/login所以真正被添加sid的地址不是首页,那么此时刷新的话也就无法通过session来获取了。

针对这个问题,我的方法是(比较挫)

1.在后台声明全局变量theSession=null

2.当登录成功后将session值保存在theSession中

3.前台做一个用户认证的方法lookUser(),即每次刷新页面的时候都访问后台“/”路由,判断theSession是否存在,如果存在则证明已经登录成功,那么返回登录信息即可。

记录下来,以备不时之需

原文地址:https://www.cnblogs.com/sky903700252/p/7846575.html