追記:質問の仕方がよくなかったので、修正をしました。
###背景
スマホアプリの場合、セッションが使えないので、トークンを使って認証をし、最近だとJWTを利用するのが主流なのかなと認識しています。スマホアプリでJWTを使うのであれば、WEBでもJWTを使うようにすることで認証の仕組みの構築を効率化したいと思っています。JWTを使った認証を実装する場合の、認証の流れの概要について自分なりに調べた内容を記載しますので、概要認識として問題ないかについて、よろしければチェックいただければ幸いです。
###私が想定しているJWT認証のフロー
(1) 新規登録時の流れ(メールアドレス+パスワードのケースを想定)
- (ユーザ)メールアドレスとパスワードをユーザがフォームに入力・送信
- (サーバ)ユーザテーブルにメールと暗号化したパスワードを保存
- (サーバ)メアド確認用URLを作成し、メールアドレス宛に送信
- (ユーザ)メールアドレス宛に確認URLが届くので、そのURLにアクセス
- (サーバ)メアド確認完了後に、ユーザデータを有効化
(2) ログイン時の流れ
- (ユーザ)上記で登録したメール+パスワードをログインフォームに入力・送信
- (サーバ)メールとパスワードを検証し、問題なければJWTを発行
- (ユーザ)JWTをローカルストレージに保存
- (ユーザ)ローカルストレージにJWTが存在するか確認し、存在したらHTTPヘッダに付与してアクセス
- (サーバ)JWTの検証がとおれば、JWT内からUserIdを取得し、該当ユーザでのログイン中であるとみなす
以上です。
どうぞ、宜しくお願いいたします。
追記:
自分で質問を修正していて、頭が整理できてきたことと、途中でこのQiitaのページを発見したことで、上記流れで概要としては間違っていないのかなと思えてきております。今後は具体的でわかりやすい質問をするよう心がけます。
丸投げとの指摘をいただき、申し訳ありません。具体的なコードを知りたいわけではなく、JWTを利用する場合の認証の流れについて、考え方が合っているか教えてほしいと思っております。いかがでしょうか?
使い方を読むなり、他の人の質問を見るなりして、質問を修正して下さい。話題として興味深いです。
ありがとうございます。ちょっと今から修正してみます。
回答1件
あなたの回答
tips
プレビュー