2017-01-24 2 views
0

Imノードアプリケーションでjson webtokenを使用しています。ユーザーがログインすると、次のコードを実行します。デコードされた値をjwtで変更する

var jwt = require('jsonwebtoken'); 
var payload = {}; 
payload.User = user; //From User table ni database 
var token = jwt.sign(payload, 'abcd'); 
return res.json(token: token); 

ライフサイクル中に何かが発生すると、ユーザーテーブルで何かが変更されます。しかし、署名されたjwt-payloadに格納されているUser-objectは古くなっています。 jwt-libraryで何らかのリフレッシュメソッドを見つけることができませんでした。 jwtトークンを再生成し、更新されたユーザーオブジェクトを挿入する必要がありますか?それは悪い解決策のように思えます。ですから、単にjwt-data内のコンテンツを更新する方法があるのだろうかと思います。

答えて

1

新しいトークンを取得するには、新しいペイロードに署名する必要があります。トークンの変更は、次のようになります。

  • は、あなたのコード内でも新しいトークン
  • を取得するために、ペイロードに署名ペイロードを更新ペイロードをデコード

  • 古いトークンを検証

    1. あなたは持っています:

      return res.json(token: token); 
      

      eは本当にです:

      return res.json({token: token}); 
      

      または本 - ES2015使用: - レスポンスボディの形であなたがやるよう

      return res.json({token}); 
      

      いますが、クライアントに新しいトークンを渡す必要があり、いずれの場合ではあなたの例、またはクッキーの形で。

  • 関連する問題