【nodejs 】 jsonwebtoken 的练习 和tool 的封装案例

41 阅读1分钟

【nodejs 】 jsonwebtoken 的练习 和tool 的封装案例

iat 为自动生成的属性 即创建时间戳
验证超时时 是需要try catch 里面捕获错误名 才行

/*

npm install jsonwebtoken 
npm home jsonwebtoken

*/
var wzkey = "wzskylinejsonwebtoken"
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar',exp: Math.floor(Date.now() / 1000) + (1 * 60) }, wzkey);
var older_token = jwt.sign({ foo: 'bar',   exp: Math.floor(Date.now() / 1000) + (1 * 60), iat: Math.floor(Date.now() / 1000) - 30 }, wzkey);

console.log({  token, older_token });
  
var decoded = jwt.verify(token, wzkey);
var older_decoded = jwt.verify(token, wzkey);

console.log({ decoded,  older_decoded });

var tool ={

    makeToken(data={},time = 24*60*60){
        return  jwt.sign(Object.assign(data, { exp: Math.floor(Date.now() / 1000) + time  }),  wzkey)
    },
    checkToken(token){
        try {
            jwt.verify(token, wzkey);
            return true
        } catch (error) { // TokenExpiredError
            return false
        }
    },
}/*

npm install jsonwebtoken 
npm home jsonwebtoken
*/
var wzkey = "wzskylinejsonwebtoken"
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar',exp: Math.floor(Date.now() / 1000) + (1 * 60) }, wzkey);
var older_token = jwt.sign({ foo: 'bar',   exp: Math.floor(Date.now() / 1000) + (1 * 60), iat: Math.floor(Date.now() / 1000) - 30 }, wzkey);

console.log({  token, older_token });
  
var decoded = jwt.verify(token, wzkey);
var older_decoded = jwt.verify(token, wzkey);

console.log({ decoded,  older_decoded });

var tool ={

    makeToken(data={},time = 24*60*60){
        return  jwt.sign(Object.assign(data, { exp: Math.floor(Date.now() / 1000) + time  }),  wzkey)
    },
    checkToken(token){
        try {
            jwt.verify(token, wzkey);
            return true
        } catch (error) { // TokenExpiredError
            return false
        }
    },
}