NodeJs JsonWebToken

导入模块

在cmd中输入以下命令,安装jsw模块

npm install jsonwebtoken

在js文件中引用

 var jwt = require("jsonwebtoken");

生成Token

var content ={msg:"today  is  a  good  day"}; // 要生成token的主题信息
var secretOrPrivateKey="I am a goog man!" // 这是加密的key(密钥) 
var token = jwt.sign(content, secretOrPrivateKey, {
                    expiresIn: 60*60*24  // 24小时过期
                });
console.log("token :" +token );

校验Token

 var token = rq.body.token || rq.query.token || rq.headers["x-access-token"]; // 从body或query或者header中获取token
jwt.verify(token, secretOrPrivateKey, function (err, decode) {
            if (err) {  //  时间失效的时候/ 伪造的token          
               rs.json({err:err})
            } else {
                rq.decode = decode; 
                console.log(decode.msg);   // today  is  a  good  day
                next();
            }
        })

注意事项

1- 设置token过期时间

如果你使用expiresInMinutes来设置token的过期时间,很抱歉它会抛出如下异常

ValidationError: "expiresInMinutes" is not allowed

请使用expiresIn:以秒为单位或描述的时间跨度字符串表示rauchg / MS。如:60,”2 days”,”10h”,”7d”


  {expiresIn: 60}       // 有效期60秒(没有时间单位以秒为准)
  {expiresIn: "2 days"}   // 有效期 2天 (后缀为时间单位)下面的类似
  ...... 
     ('1d')      // 86400000
     ('10h')     // 36000000
     ('2.5 hrs') // 9000000
     ('2h')      // 7200000
     ('1m')      // 60000
     ('5s')      // 5000
     ('1y')      // 31557600000

2 - verify时返回的err的值

    "err": {
    "name": "TokenExpiredError",
    "message": "jwt expired",   //  token过了有效期
    "expiredAt": "2016-11-07T03:31:25.000Z"
  }
 "err": {
    "name": "JsonWebTokenError",
    "message": "invalid token"  //  伪造/无效的token
  }

你可能感兴趣的:(nodejs)