一个计算机技术爱好者与学习者

0%

使用accessToken记录登录状态

1. js设置cookie

1.1. 海哥的插件

浏览器端用到了海哥写的Cookie插件:https://github.com/voidking/jquery-cookie ,值得好好学习一下。

1
cookie.prototype.setCookie('accessToken', accessToken,7);

1.2. jquery官方插件

如果使用jquery官方给的cookie插件,用法如下:

1
$.cookie('accessToken', accessToken,{ expires: 7});

1.3. 原生js

如果使用原生的JS来操作cookie,用法如下:

1
2
3
4
5
6
7
8
9
//获取当前时间
var date=new Date();
var expireDays=7;
//将date设置为7天以后的时间
date.setTime(date.getTime()+expireDays*24*3600*1000);
//或者也可以用
date.setDate(date.getDate+expireDays);
//将accessToken这个cookie设置为7天后过期
document.cookie = 'accessToken='+accessToken+';expires=7';

2. js删除cookie

2.1. 海哥的插件

1
cookie.prototype.delCookie('accessToken'); 

2.2. jquery官方插件

1
$.removeCookie('accessToken');

2.3. 原生JS

1
2
3
4
5
6
7
//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setTime(date.getTime()-10000);
//将accessToken这个cookie删除
document.cookie='accessToken=v; expire='+date.toGMTString();
console.log(document.cookie);

3. js获取cookie

3.1. 海哥的插件

1
var accessToken = cookie.prototype.getCookie('accessToken');

3.2. jquery官方插件

1
var accessToken = $.cookie('accessToken');

3.3. 原生js

1
2
3
4
5
6
7
8
9
var accessToken = getCookie('accessToken');
function getCookie(objName){
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i ++){
var temp = arrStr[i].split("=");
if(temp[0] == objName)
return unescape(temp[1]);
}
}

4. Node端获取cookie

1
2
3
4
5
6
var Cookies = {};
req.headers.cookie && req.headers.cookie.split(';').forEach(function( Cookie ) {
var parts = Cookie.split('=');
Cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
});
var accessToken = Cookies['accessToken'] || '';

5. 后记

accessToken可以在前端获取后传给Node端,也可以在Node端获取。如果这个accessToken不为空,则表明该用户已经登录,否则表明该用户未登录。

6. 参考文档

jQuery Cookie
http://plugins.jquery.com/cookie/

jQuery Cookie项目地址
https://github.com/carhartl/jquery-cookie

关于document.cookie的使用
http://www.cnblogs.com/newsouls/archive/2766567.html