前端开发案例——COOKIE/SESSION机制(一)
来源:互联网 发布:淘宝店铺修改发货地址 编辑:程序博客网 时间:2024/06/10 20:06
**
场景
**
联合登录(自己独立账号体系登陆以后,去其他业务系统联合登录):
新开一个独立账号体系,给企业用户使用,登录名为企业名称。每一个企业用户绑定一位会员ID,用于复用会员系统的功能(下单、支付…)。因此,在企业用户登陆的同时,要去会员系统做联合登录。会员系统提供的登陆方式为302跳转(页面跳转链接)。
开发模型前后台分离:
前台页面+php;后台java
当前页面为:http://www.test.com/login
联合登录提供跳转方式:http://www.remotetest.com/memberLogin?redirect=http://www.test.com/hello&err=http://www.test.com/error;(redirect为成功情况下回跳链接,err为失败情况下回跳链接)
当联合登陆成功时,会往浏览器写入cookie,用于下单、登出等操作。此时遇到一个问题,如果cookie的生存周期为session,即同一次会话中有效,则通过302跳转到http://www.test.com/hello时,在浏览器端找不到对应的cookie。(原因是通过跳转过来的链接,浏览器会认为是另外一个会话,而不是之前的会话了)
为了恢复联合登录写在浏览器的cookie,解决方法如下:
1.将cookie写入浏览器local_storage暂存区中,uuid生成一个key,value为跳转前客户端cookie信息;
2.在跳转链接后面添加参数–>http://www.test.com/hello?cookie=*
3.跳转完毕后,在跳转页面onload时,先读取local_storage,将cookie拿出来恢复。
此方法可以解决上述问题,但是有缺陷:
首先,local_storage需要HTML5以后才支持,并不能排除个别用户使用不了的情况。
参考链接:http://www.cnblogs.com/st-leslie/p/5617130.html
其次,读写local_storage的本质是IO操作,这种解决方案是冗余的IO。
优化方案:
在跳转链接页面onload时,快速刷新一次,使浏览器认为的会话切换回当前用户,则会重新加载对应的cookie(有点抽象),我的js如下:
function fresh() { if(location.href.indexOf("reload=true")<0) { location.href+="&reload=true"; } } window.onload = function(){ fresh(); };
- 前端开发案例——COOKIE/SESSION机制(一)
- web前端——session和cookie
- Cookie与Session深入理解(一)——Cookie
- Web前端数据存储—cookie机制
- Cookie/Session机制详解(1)Cookie
- 传智播客——COOKie和session(一)
- cookie和session(一)——原理
- Cookie/Session机制详解(2)Session
- 前端页面——Cookie与Session有什么区别
- 前端页面——Cookie与Session有什么区别
- 前端页面——Cookie与Session有什么区别
- 前端页面——Cookie与Session有什么区
- 【Web前端】COOKIE与SESSION的机制区别
- cookie和session案例
- 前端开发——个人作品案例
- cookie机制和session机制的原理一区别
- Cookie和SESSION(一)
- cookie 和session(一)
- Matlab中的几个随机函数-randperm,sort,rand,randint
- 终于有人把O2O、C2C、B2B、B2C的区别讲透了
- 腾讯云服务器装MYSQL数据库浏览器访问乱码问题
- 如何高效的访问内存
- 左值引用与右值引用
- 前端开发案例——COOKIE/SESSION机制(一)
- How to Estimate Export File Size Without Creating Dump File
- 1 单例模式
- java面试题(六)
- android studio 2.2 NDK开发经验总结及相关错误汇总(旧版NDK开发转新版NDK开发经验)
- elasticserch +kibana+marvel+sense
- redis aof文件解析成命令
- sublime text 3
- C++17引入的模块为什么能加快编译速度?