###【使用技術】
・Rails5(APIモード)
・Javascript(Vue.js)
・Ajax(axios)
###【今回関係のあるライブラリ(gem)】
・devise
・devise_token_auth
※新規登録・ログイン処理に関しては上記ライブラリを使用しており、
メール認証に関しては、
devise_token_authのconfirmableモジュールを使用しております。
参考記事:
[Rails] deviseの使い方(rails5版)
###【実現したいこと】
下記の通り、
受信メールに記載されている認証URLをクリックしただけで、
アカウントを有効化し、ログイン済みのページ(マイページ等)へ遷移させたいと考えており、
その際の仕組みに関して質問させて頂きたいです。
(二段階認証後、ユーザにログイン情報を入力させることなくログインできる方法がないか知りたいです。)
STEP1:ユーザ名、メールアドレス、パスワードを入力して新規登録
STEP2:新規登録後、認証URLを記載したメールをユーザへ送信
STEP3:メールに記載された認証URLをユーザがクリックしてアカウントを有効化
STEP4:ログイン済みの状態で特定のページ(マイページ等)へ遷移
【試したこと】
メールに記載された認証URLをクリックした後、
ログイン画面へ遷移させ、ログインを行ってもらい、
その後、ログイン済みの状態で特定のページへ遷移させることはできました。
(上記がdeviseもしくはdevise_token_authを用いたメール認証のスタンダードな流れだと認識しています。)
【現在の仕様】
・ログイン画面でユーザがメールアドレス・パスワードを入力してログイン
・入力情報が正しければアクセストークン等必要な情報をブラウザへ返却(パスワードは返却しない)
・返却された情報をブラウザに保存しておき、次回からはその情報を使用して自動ログイン
※ブラウザのデータがユーザによって削除(ログアウト等)されると自動ログインできなくなり、
ログイン画面にて再ログインを行う必要があります。
【考えられる仕様】
ログイン処理にはユーザIDとパスワードが必要ため、
新規登録時に入力されたユーザIDとパスワードをブラウザに保存しておき、
メール認証が行われた後に、
保存しておいた情報を使用して裏でログイン処理を行えば、
ユーザがログイン処理を行う必要はなさそうなのですが、
ブラウザ上にユーザIDやパスワードを保存するのは
流石にセキュリティ上問題がありそうで、
その点でも悩んでいます。。
(もちろん初回のログイン処理を行った後すぐにブラウザからユーザIDとパスワードは削除しますが、、)
そもそも、
いくら新規登録を行った後とは言え、
ユーザがログインを一度も行わずにログインできてしまうというのは
セキュリティ上避けるべきでしょうか?
【質問に関して】
初質問のため、質問の際のマナー等で間違いがありましたら申し訳ありません!
「この情報がないと回答できない」等ありましたら
ご指摘ください!
あなたの回答
tips
プレビュー