ValidationError:"expiresInMinutes"不允许NodeJs JsonWebToken

Abd*_*yed 64 node.js jwt

我正在使用NodeJs和JsonWebtoken模块.

我在调用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
        });

}
Run Code Online (Sandbox Code Playgroud)

Abd*_*yed 127

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

你必须调用expiresIn而不是expiresInMinutes.

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

这里的值expiresIn是以秒为单位而不是以分钟为单位,因此必须正确放入该值.

  • 请不要对@MahmoudElgohary的建议.这将在24分钟到期,而不是几小时.几个小时,使用`{expiresIn:'xh'}`其中`x`是任意数字.例如:`{expiresIn:'24h'}` (5认同)
  • 来自doc的@MahmoudElgohary:"expiresIn:以秒表示" (3认同)

kax*_*993 20

expiresInMinutes被废弃,你应该使用expiresIn: '1440m'例如


ede*_*ans 8

expiresInMinutes已弃用,请expiresIn改用.来自文档:

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