ルートを作成しています/user/logout
using dusterio/Lumen-passport
そして、コントローラーのアクションで、トークンを手動で取り消します。これにより、ユーザーはログアウトされます。
ユーザーをログアウトするには2つのオプションがあります。トークンを取り消し(データベースにトークンを保持します。トークンが役に立たないことを示すフラグを設定するだけです)、トークンを削除します。
私の質問は単にこれです:
トークンを管理するための最良のアプローチは何ですか?削除または取り消すことによってログアウトする必要がありますか?
将来的には、redisを使用してトークンを保存する予定です。期限切れのデータをredisサーバーに保持するのは意味がないため、トークンを削除する必要があると思います。
1)トークンを取り消す/無効にします。
2)保護されたAPIを呼び出すたびに、トークンの有効性を確認し、それに応じてリクエストのみを処理する必要があります。
3)無効なトークンが発生した場合は、ユーザーをログインページにリダイレクトし、認証が成功したときに有効なトークンを発行して、要求されたページに再度リダイレクトします。
このアプローチでは、同じブラウザの別のタブ/ウィンドウで開いている既存のセッションがあり、ログアウト/セッションのタイムアウト後にユーザーがまだログインしていない場合でも、これにより常に有効なトークンが使用されます。
期限切れのトークンを保存することは間違いなく意味がありません。 JWTトークンをデータベースに保存することも正しい方法ではありません。これらはセッションデータにのみ保存し、有効性の変更時に削除/置換する必要があります。
したがって、特定の目的のために1つの有効なJWTトークンのみをセッションデータに保存します。 JWTトークン発行サーバーの実装が最適であると仮定して、同じJWTトークンを二度と取得しないようにしてください。したがって、有効期限が切れた後にそれらを保存する意味はまったくありません。