NodeJs Json WebToken

4666 ワード

モジュールをインポート
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の有効期限を設定します.
もしあなたがexpires InMinutesを使ってtokenの期限切れを設定したら、すみません、次のような異常があります.
ValidationError: "expiresInMinutes" is not allowed
expires Inを使用してください.秒単位または説明した時間スパン文字列はrauchg/MSを表します.例えば:60「2 days」「10 h」「7 d」

  {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
  }