クライアントサイドにReactを用いて、ユーザー登録を機能に持つ新規SPA開発を考えております。
その際にユーザーのサインイン時のセッション管理にJWTを用いようと思っているのですが、TokenのExpiration Time の扱いについて質問させて頂きたいです。
実現したいUX
ユーザーが何らかのアクション(例えば、ここでは「ページ遷移」とする)行ってから、1時間以内にページ遷移を行わなかった場合セッションアウトとして、次のアクションもしくはSPAへのアクセス時にサインインページへとリダイレクトする。
実装・開発に関する疑問
色々調べてみて、以下の実装が一般的?であるとわかったので、このように実装しようと考えております。
- サインインリクエスト時に期限付きのJWT(例えば、1時間)を発行しレスポンス
- それをクライアントサイドでlocalStorageなどに保存する
- 認証が必要なAPIに関してはヘッダーに、Bearer Token としてJWTを付与して、サーバーサイドで認証する
しかし、上記の実現したいUXを達成する際に、最後のアクションをしてから1時間のセッション維持を実現するには、どうするのがベストなのか疑問に思いました。
現状考えつくのは、
- 新しくトークンを発行するAPIを作成して、認証が必要なAPIをリクエストする前に毎回新規JWTを発行し受け取り、localStorageを書き換える。
- 認証が必要なAPIに関して一つ一つにJWTの発行を実装しレスポンス、localStorageを書き換える
- 実現したいUXを諦めて、サインインから1時間以内。それを超えたら毎回サインインページヘリダイレクトさせる(1時間以上のアクティブ利用の可能性があるサービスなので避けたい。ただセキュリティ上なるべく短いセッション維持にしたい)
です。
ネット上にたくさん情報がある分野だとは思うのですが、ご経験者が具体的にどのように実装されているのか知りたく思い質問させて頂きました。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/17 03:31 編集