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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

713閲覧

laravelのメール認証カスタマイズ方法

teratailmacr2

総合スコア31

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/08/27 12:43

現在laravel 5.8で開発をすすめています。

Email Verificationを実装するところまでは出来ましたが、この機能はログイン中でなければ機能しません。

1.ユーザー情報入力
2.(仮)登録後自動的に(マイページに)ログイン状態に
3.確認メール送信
4.受信したメールの本登録URLにアクセス
5.ログイン中ページ(マイページ)内で本登録完了

上記のフローで、2の後にログアウトしたり、PCで登録してスマホで受信した確認メールにアクセスすると、5の時点でログイン出来ていない為ログインフォームに飛ばされます。

このままログインすると本登録は完了しますが、理解してない場合は本登録URLにアクセスしたのに何も起こらないと思ってしまします。

これは本登録完了ページ自体にログイン認証が必要な事が原因ですが、auth機能を除くだけではうまくいきません。

どうすればよいでしょうか?
Email Verificationを使う場合はこの仕様に従うしかないのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

4をカスタマイズしてauth()->loginUsingId()を使用し、強制的にログインさせる
というのはどうでしょうか

投稿2019/08/27 15:38

mikkame

総合スコア5036

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

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

teratailmacr2

2019/08/27 15:44

ご回答ありがとうございます。 同様のアイデアを思いつき、現在試行錯誤中です。 ただよく考えると、もしそれが実現した場合、IDを適当に変えてアクセスするだけで、メール認証とは無関係に、他人のアカウントに簡単にログイン出来てしまうのではないかと…。
mikkame

2019/08/27 15:49

メール認証用のトークンから特定のユーザという事が導きだせると思うのですが(すみません、5.5LTSをメインに使ってるので5.8はよく知らない) その時点で適当なID(トークン)では、ユーザIDが出ないので問題ないのではないでしょうか
teratailmacr2

2019/08/28 06:53

認証メールは /vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php の中で URL::temporarySignedRoute( 'verification.verify', Carbon::now()->addMinutes(Config::get('auth.verification.expire', 60)), ['id' => $notifiable->getKey()] ); としてますが、この時生成されたURL https://laravel.local/email/verify/17?expires=1566972090&signature=f6c7705477042b6536773ddff11156fcd493f838bf6bae3393794789d8ad7f43 のsignature=xxxの「xxx」の中に、上記URLで言う「17」が含まれていると言う事でしょうか? そうであれば、17を16に書き換えても比較して無効なURLと判断がつきそうですが、この「17」を取り出す方法がわかりません。(「verify/17?expires」の17は$request->idで取得できました)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問