27

API アプリケーションでユーザーを認証するために、NodeJs API アプリケーションで jsonwebtoken を使用しています。私が設定したフローは次のとおりです。

1) ユーザーはサインアップ API を介して登録し、アクセス トークンは以下を使用して生成されます。

var jwt = require('jsonwebtoken');
var token = jwt.sign(user, _conf.authentication.superSecret, {
    expiresIn: 1440 // I intend to keep it short.
});

2) たとえば、トークンは 24 時間で期限切れになります。このトークンはクライアント モバイル アプリケーションに返され、後続のすべての API 要求でヘッダーとして使用されます。

jwt のリフレッシュ トークンを使用する方法を知りたいです。現在、トークンを更新するメカニズムはありません。したがって、トークンが 24 時間で期限切れになる場合、クライアント (モバイル アプリ) が新しいアクセス トークンを要求できるようにします。前もって感謝します。

4

1 に答える 1

37

私はプロジェクトで同じ問題を抱えていました。

1)更新トークンを作成し、ユーザーが(jsonwebtokenで)サインインしたときにそれを返しました。ユーザーと一緒に更新トークンを保存しました。

2) クライアントが期限切れのトークンを含むリクエストを送信すると、サーバーは 401 を返します。

3) トークンを更新する新しいパスを実装しました。更新トークンとユーザーをパラメーターとして受け取り、新しいトークン (jsonwebtoken) を返します。

4) (オプション) 誰かがトークンを盗んだ場合に備えて、リフレッシュ トークンを無効にするメカニズムを実装できます。

私は実装をこの投稿に基づいています。本当に良いスニペットです:

JWT のリフレッシュ トークン (Node.js 実装)

それが役に立てば幸い

于 2016-11-21T10:05:39.373 に答える