【问题标题】:ValidationError: "expiresInMinutes" is not allowed NodeJs JsonWebTokenValidationError:不允许使用“expiresInMinutes”NodeJs JsonWebToken
【发布时间】:2016-10-04 09:52:10
【问题描述】:

我正在使用带有 JsonWebtoken 模块的 NodeJ。

调用json web token的sign方法时遇到这个错误

ValidationError: "expiresInMinutes" 是不允许的

var jwt = require('jsonwebtoken');

exports.authenticate = function(req, res, next) {
    var user = {"Name":"Abdul"} //static data for test purpose.

    var token = jwt.sign(user, req.app.get('jwtTokenSecret'), {
          expiresInMinutes: 1440 // expires in 24 hours
        });

        // return the information including token as JSON
        res.json({
          success: true,
          message: 'Enjoy your token!',
          token: token
        });

}

【问题讨论】:

    标签: node.js jwt


    【解决方案1】:

    expiresInMinutes 已弃用,请改用expiresIn。来自docs

    expiresIn:以秒或描述时间跨度rauchg/ms的字符串表示。例如:60、“2 天”、“10h”、“7d”

    【讨论】:

      【解决方案2】:

      好的,我从https://www.npmjs.com/package/jsonwebtoken找到了

      您必须调用 expiresIn 而不是 expiresInMinutes

       var token = jwt.sign(user, req.app.get('jwtTokenSecret'), {
                 expiresIn : 60*60*24
               });
      

      这里expiresIn的值是以秒而不是分钟来衡量的,所以这个值必须正确输入。

      【讨论】:

      • var token = jwt.sign(user, req.app.get('jwtTokenSecret'), { expiresIn : 60*24; // 24 小时后过期 });
      • @MahmoudElgohary 来自文档:“expiresIn:以秒为单位”
      • 请不要听@MahmoudElgohary 刚才的建议。这将在 24 分钟内到期,而不是几小时内。对于几个小时,使用{expiresIn : 'xh'},其中x 是任意数字。例如:{expiresIn : '24h'}
      • thanks man :+1: ,下次我会在堆栈溢出之前先查看文档 :joy:
      【解决方案3】:

      expiresInMinutes 已被弃用,您应该使用 expiresIn: '1440m' 例如

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        相关资源
        最近更新 更多