2016-04-29 8 views

答えて

0

私は、jwtを使っていくつかのことを処理する最良の方法として以下を見つけました。

jwtはステートレスメカニズムなので、私は以下の問題に直面しました。 ログアウトを実装する方法

  • ?誰かがログアウトしようとすると、ステートレスなのでトークンを無効にする問題が発生します。

    ソリューション:(同じTTLのようにトークンいる)すべてのトークンを処理し、インメモリデータベースとして 使用のRedis、トークンセーブユーザがログインするたびに、クロストークンの検証と一緒に各要求でそれを確認してください。誰かがログアウトしたいときは、クライアント側と一緒にredisからトークンを削除してください。ユーザーがログアウトして同じトークンでアクセスしようとすると、redisでトークンが見つからないため、対処して投げてください Unauthenticatedエラーです。

  • どうユーザーがパスワードを変更し同じユーザのすべてのトークンを無効にするには?

  • 実装方法すべてのデバイスからログアウト機能?

    ソリューション:我々はRedisの中のトークンを格納しているとのいずれか、私たちは、特定のユーザーに関連するすべてのトークンを検索し、データベース内のRedisや店舗のトークンからそれらを削除する必要がありすぎたときに関連するすべてのトークンを見つける、ユーザーがサインイントークンIDを取得し、それらを赤から削除します。 dbでの保存は、dbsが検索操作のほうが優れているほど優れています。

+0

私はあなたの問題に最適な解決策はわかりませんが、サーバー上のメモリにトークンを保存するとすぐに、ステートレスな認証メカニズムがなくなります。これはうまくいくかもしれませんが、複数のサーバーに拡張する必要がある場合は、従来の「セッションアフィニティ」の問題が残っています –

+0

ええ!私は同意しますが、上記の問題を解決する方法は何ですか?これらはすべてのアプリケーションで実装する必要がある最小限の機能です – Kaphy

+0

パスワード変更時にそのユーザーに関連するすべてのトークンを検索および削除しない理由と、すべてのデバイスからログアウトしたときに、あなたがステートレスに留まることができるように –

関連する問題