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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

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

Ruby

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

Ajax

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

Q&A

0回答

530閲覧

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

takoyaki9

総合スコア9

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

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

Ruby

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

Ajax

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

0グッド

2クリップ

投稿2018/05/01 11:28

編集2018/05/01 11:34

###【使用技術】
・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とパスワードは削除しますが、、)

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

【質問に関して】

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問