因为之前公司的项目前后端是在一起的,因为要用vue来重构之前的项目。所以token签名要作为一个参数传递到后台。所以就遇到两个问题,1 token的保存和获取的问题。 2 token 判断。判断用户是否用token值。
首先先说一下 token的保存和获取问题。
保存到哪?随着H5的普及相信大家也都知道本地存储,包括我自己在开发的时候也是也是经常用到本地存储的东西。所以我首先想到的就是本地存储。另外想到就是用cookie来存储。在调研这个东西的时候就了解到国内的某大互联网公司,他们的做法是在登陆的时候会下载一个安全的插件在本地。然后这个用户信息都是存储在本地的,所以可以跨引用去读取,比如从浏览器跨到桌面应用。因为都是取的本地的东西,就像一个中转站。
相信本地存储的操作大家都会不在具体阐述,先说一下本地存储中遇到的问题。右键打开新连接(如下图操作)
在新连接的打开页面中,要重新登陆。相信大家都不想再次登陆吧,这样体验会很不友好。然后发现本地存储的东西都是只有在当前页面的当前域名下。所以只能存在cookie里面了,cookie里面不会出现这个问题。具体要说cookie的涉及的内容较多详细信息就不再多说,下面只说一下js来控制cookie的操作。
1 设置cookie
document.cookie="name="+username;
例如 document.cookie="access_token=" + val;
2 读取(在控制台里面 直接输入 document.cookie 就可以返回 该域名下的 cookie 信息,就是字符串,也就是说js进行字符串操作)
function getCookie(name)
{var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]);elsereturn null;
}
3 删除
//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setTime(date.getTime()-10000);
//将userId这个cookie删除
document.cookie="name=val; expires="+date.toGMTString();
判断用户是否有token,是在路由里面去判断,也就是在拦截的时候去判断是否有token。