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
  }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值