web-dev-qa-db-ja.com

JWTを使用するステートレスアプリケーションのページに「Enter Password to Continue」を実装する方法は?

私のアプリケーションでは、ユーザーがログイン済みのデバイスを開いたままにした場合に誰かがそのページを開くのを防ぐために、ユーザーが再度パスワードを入力した後にのみユーザーがページにアクセスできるようにしたいと考えています。アプリケーションは、認証にJWTトークンを使用します。

パスワードの再検証を実装し、次のページのタスクが完了するまでそれを保持するにはどうすればよいですか?

1
Lav Shinde

最も簡単な方法は、問題のタスクと認証の両方を一度に実行することです。ユーザーがフォームに記入し、同じページでパスワードを入力できるようにします。ユーザーが送信するときに、JWTとパスワードの両方がサーバー側で正しいことを確認し、正しい場合はタスクを実行します。

これは、メールの変更など、ユーザー入力をあまり必要としないタスクに適しています。完全な管理領域へのアクセスを許可するなど、より大きなものには、別のものが必要です。

例として管理領域を見てみましょう。 1つの解決策は、管理領域用に別のログインエンドポイントを用意し、そのエンドポイントでユーザーを認証した後、JWTペイロードにフラグを追加するだけです。 isLoggedInAsAdmin: true。管理領域のログインを通常のログインよりも早く期限切れにしたい場合は、代わりに別のJWTを使用できます。

0
Anders