实现想法
我们可以在登录验证通过时将一个key为cookie,value为字符串+时间戳的值存入localstorage(以下简称ls)。以后每次登录页面都会检验ls的库中是否有该value,获取当前时间戳和存储时的时间戳进行比较是否超时。
先封装一个setcookie
function SetCookie(value, savetime) {
var settime = savetime * 1000 * 60 * 60 *24//第二个参数的单位即为/天
var setdate = new Date().getTime()//获取当前时间戳
localStorage.setItem('cookie', value + ';' + settime + ';' + savedate)
}
在每次打开页面我们验证ls中是否存在cookie
(function getCookie() {
var x = localStorage.getItem('cookie')
if (x) {
var n = x.split(';')
var t = new Date().getTime()
console.log(n[2])
console.log(t)
if (t - n[2] < n[1]) {
alert('欢迎回来:' + n[0])
}
else {
var username = prompt('请输入你的用户名', '')
if (username != null & xx != '')
SetCookie(username, 10)
}
}
else {
var username = prompt('请输入你的用户名', '')
if (username != null & username != '')
SetCookie(username, 10)
}
})()
这每次进入页面都会判断你的cookie是否存在且是否超时,若超时需要重新输入形成新的value取代旧的
Localstorage用作cookie的缺点
ls简单来说就是一个本地的库,他可以同过setitem和getitem两种方法对你的数据进行存储和读取。
但是ls的存储必须要经过setitem的方法,也就是如果要通过时间戳的方式来设置有效时间。如果我知道了你存储的方式,伪造一个ls,那么比偷密码容易多了。
这种方式最好只适用一些demo和非上线项目。若不是请选用cookie或者session。