質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Ruby

    7670questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    1767questions

  • Ajax

    1090questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

  • Devise

    248questions

    Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

  • axios

    22questions

メールによる二段階認証時の自動ログインに関して【Rails APIモード + Vue.js】

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 263

takoyaki9

score 2

【使用技術】

・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とパスワードは削除しますが、、)

そもそも、
いくら新規登録を行った後とは言え、
ユーザがログインを一度も行わずにログインできてしまうというのは
セキュリティ上避けるべきでしょうか?

 【質問に関して】

初質問のため、質問の際のマナー等で間違いがありましたら申し訳ありません!
「この情報がないと回答できない」等ありましたら
ご指摘ください!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7670questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails 5

    1767questions

  • Ajax

    1090questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

  • Devise

    248questions

    Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

  • axios

    22questions