使用ajax登录的时候设置session,刷新页面后session丢失
2017-11-16 21:29
1551 查看
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是否存在,如果存在则证明已经登录成功,那么返回登录信息即可。
记录下来,以备不时之需
直译为“会话”,是服务端为跟踪用户而制定的一种机制,即每一个用户访问服务端的时候都会生成一个唯一的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是否存在,如果存在则证明已经登录成功,那么返回登录信息即可。
记录下来,以备不时之需
相关文章推荐
- 使用Ajax和JSP实现无刷新的登录页面
- 登录框一直在页面中间且使用Ajax无刷新登录
- AJAX进入方法设置Session,需要刷新页面jsp才能获取值的问题
- 使用 frameset frame布局 右侧session丢失 要整个页面进入登录界面
- 在用户登录的时候,将用户名显示在登录成功的页面,使用session。
- 使用AJAX技术做一个无页面刷新的会员登录功能--解决中文乱码
- php 使用session保存页面登录信息
- 解决iframe窗体丢失Session时登录窗口显示在子页面的问题
- 转载 使用AJAX实现动态刷新页面功能
- .Net中刷新页面时session丢失的问题
- 掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序 在不刷新页面的情况下使用 DOM 改变网页界面
- 使用无刷新技术,去请求该失效Session的页面,实现跳转到重新登陆页面。
- 一段用于编辑页面表单并使用ajax提交与无刷新获取的js段落
- Ext下,ajax请求和普通http请求,session超时转到登录页面的解决方案
- Chrome浏览器使用js刷新页面后参数丢失。
- 在登录页面中js进行正则验证电话号码和邮箱地址,并使用ajax进行用户ID的数据库验证
- 使用AJAX调用数据库不刷新更新页面问题
- 使用Ajax为什么能实现页面无刷新
- 刷新、前进、后退、离开页面,使用ajax对数据库进行操作
- 解决iframe窗体丢失Session时登录窗口显示在子页面的问题