2016-06-04 37 views
58

Sto utilizzando NodeJs con JsonWebtoken Module.ValidationError: "expiresInMinutes" non è consentito NodeJs JsonWebToken

sto affrontando questo errore quando si chiama il metodo segno di web JSON gettone

ValidationError: "expiresInMinutes" is not allowed

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 
     }); 

} 

risposta

114

Ok ho scoperto che da https://www.npmjs.com/package/jsonwebtoken

Dovete chiamare expiresIn piuttosto che expiresInMinutes.

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

Qui il valore del expiresIn è misurato in secondi piuttosto che minuti, quindi il valore deve essere messo in modo corretto.

+1

var gettone = jwt.sign (utente, req.app.get ('jwtTokenSecret'), { expiresIn: 60 * 24; // scade in 24 ore }); –

+3

@MahmoudElgohary dal doc: "expiresIn: espresso in secondi" –

+5

Si prega di non fare ciò che @MahmoudElgohary ha appena suggerito. Questo scadrà tra 24 MINUTI, non ore. Per ore, usa '{expiresIn: 'xh'}' dove 'x' è un numero qualsiasi. esempio: '{expiresIn: '24h'}' –

16

expiresInMinutes è stata sconsigliata, è necessario utilizzare expiresIn: '1440m' per esempio

5

expiresInMinutes è deprecato, utilizzare expiresIn invece. Dal docs:

expiresIn : expressed in seconds or a string describing a time span rauchg/ms . Eg: 60, "2 days", "10h", "7d"