MCPcopy Create free account
hub / github.com/badyun/AShare / checkToken

Method checkToken

utils/token.js:30–74  ·  view source on GitHub ↗
(token)

Source from the content-addressed store, hash-verified

28 }
29
30 checkToken(token) {
31 let decodeToken = (token) => {
32
33 let decArr = token.split(".");
34 if (decArr.length < 2) {
35 //token不合法
36 return false;
37 }
38
39 let payload = {};
40 //将payload json字符串 解析为对象
41 try {
42 payload = JSON.parse(Buffer.from(decArr[0], "base64").toString("utf8"));
43 } catch (e) {
44 return false;
45 }
46
47 //检验签名
48 let secret = "作者QQ:1178560551";
49 let hash = crypto.createHmac('sha256', secret);
50 hash.update(decArr[0]);
51 let checkSignature = hash.digest('base64');
52
53 return {
54 payload: payload,
55 signature: decArr[1],
56 checkSignature: checkSignature
57 }
58 }
59
60 let resDecode = decodeToken(token);
61
62 if (!resDecode) {
63 return false;
64 }
65
66 //是否过期
67 let expState = (parseInt(Date.now() / 1000) - parseInt(resDecode.payload.created)) > parseInt(resDecode.payload.exp) ? false : true;
68
69 if (resDecode.signature === resDecode.checkSignature && expState) {
70 return true;
71 }
72
73 return false;
74 }
75
76}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected