cookie.js
1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import jwt from 'jsonwebtoken';
const getCookie = (target) => {
// let cookie = document.cookie;
let arr;
const reg = new RegExp(`(^| )${target}=([^;]*)(;|$)`);
if (arr = document.cookie.match(reg)) {
return unescape(arr[2]);
} else {
return null;
}
};
const setCookie = (name, data) => {
document.cookie = `${name}=${data}`;
};
const delCookie = (name) => { // 为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
const date = new Date();
date.setTime(date.getTime() - 1);
const cval = getCookie(name);
if (cval != null) { document.cookie = `${name} = ${cval};expires = ${date.toGMTString()}`; }
};
// 生成token
const sign = (payload) => {
return jwt.sign({
exp: Math.floor(Date.now() / 1000) + (60 * 60), // 1h
data: payload,
}, 'moxilogin');
};
// 解析token
const verify = (ck) => {
jwt.verify(getCookie('token'), 'moxilogin', (err, decoded) => {
ck(err, decoded);
});
};
// 判断token是否过期
const ifToken = (ck) => {
let bool = true;
verify((err) => {
if (err) { // cookie 超时了;
// 登出删除token
delCookie('token');
window.location.href = '/';
bool = false;
}
});
return bool;
}
export { getCookie, setCookie, delCookie, sign, verify, ifToken };