🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

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

Q&A

解決済

1回答

2226閲覧

認証中にログイン画面にアクセスされたらログアウトさせた上でリダイレクトさせたい

yuki84web

総合スコア1857

Laravel

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

0グッド

0クリップ

投稿2019/11/14 05:15

スカフォールドを使って認証機能のベースを実装しました。
ログイン画面にて認証成功後、認証が必要なページへリダイレクトされます。

ログイン画面は認証が不要なページなので、
当然ですがログアウトしていなくてもアクセス出来る状態です。

URL直打ちでもしない限りアクセスはされないでしょうが、
「認証中にログイン画面にアクセスされたら
ログアウトさせた上でリダイレクトさせたい」と考えています。


web.php

php

1Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');

LoginController.php

php

1public function showLoginForm() 2{ 3 if (Auth::check()) 4 { 5 Auth::logout(); 6 return redirect('/'); 7 } 8 else 9 { 10 return view('auth.login'); 11 } 12}

上記のように LoginController.php に処理を記述してみましたが、
ログイン時には、そもそもメソッド自体が呼ばれていないようで
期待した結果にはなっていません。
他に記述すべき場所はありますでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

checkするまでもなくlogout入れてそのままログインページ出せば良いだけでは?
redirectの必要はないと思います

投稿2019/11/14 06:08

m.ts10806

総合スコア80875

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

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

yuki84web

2019/11/14 06:26

そのlogoutを入れる場所が分かりません。リダイレクトさせているのは、以前別のコントローラにログアウト処理「Auth::logout();」だけを書いたとき、ブランクページで処理が終了した為です。
m.ts10806

2019/11/14 06:31

では現状からredirectをはずしelseもはずし、 「Authチェックのときはログアウト 」だけ残してそのままviewを返すと良いのでは。
yuki84web

2019/11/14 07:01

ご提案の通り修正したところ、ログインされたまま"/home"にリダイレクトされました。 "RedirectIfAuthenticated.php"に下記のような記述があったため、 判定処理をコメントアウトしたところ、ログアウトされた状態でログインページを表示出来ました。 public function handle($request, Closure $next, $guard = null) { /* if (Auth::guard($guard)->check()) { return redirect('/home'); } */ return $next($request); }
m.ts10806

2019/11/14 07:43

ヒントになったようで何よりです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問