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

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

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

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

Laravel 5

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

Q&A

解決済

1回答

3194閲覧

LaravelのAuth::attemptでユーザーが取得できない

yookoko

総合スコア62

Laravel

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

Laravel 5

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

0グッド

0クリップ

投稿2021/06/09 02:20

編集2021/06/09 02:32

環境
php7.4
laravel 6.20.26

routes\web.php

php:PHP

1Route::get('/auth_login', function () { 2 $credentials = [ 3 "email" => "emailの値", 4 "password" => "passwordの値" 5 ]; 6 7 if (Auth::attempt($credentials)) { 8 dump("認証しました"); 9 } else { 10 dump("認証に失敗しました"); 11 } 12 13 dump(Auth::id()); // idが取得できる 14}); 15 16Route::get('/auth_check', function () { 17 dump("認証確認"); 18 dump(Auth::id()); // idが取得できない 19});

「/auth_login」にアクセスします。
Auth::attemptで認証を行い、認証が成功します。
その後Auth::id()でユーザーIDが取得できます。

ですが、URL「/auth_check」に遷移するとログイン状態が維持されていなくAuth::id()が取得できません。

考えられる原因がありましたら教えて頂けると助かります。

以下追記です。
sessionが機能しているかテストしました。
Auth::attemptを利用するとsession自体がうまく取得できなくなります。

php:PHP

1Route::get('/auth_login', function () { 2 $credentials = [ 3 "email" => "emailの値", 4 "password" => "passwordの値" 5 ]; 6 7 if (Auth::attempt($credentials, true)) { 8 dump("認証しました"); 9 } else { 10 dump("認証に失敗しました"); 11 } 12 13 session(["test_session" => "セッションテスト"]); 14 15 dump(Auth::id()); // idが取得できる 16}); 17 18Route::get('/auth_check', function () { 19 dump("認証確認"); 20 dump(Auth::id()); // idが取得できない 21 22 dump(session("test_session", "セッション取得に失敗")); // 「セッション取得に失敗」が出力 23});

Auth::attemptを利用していない場合は、session値は取得できます。

php:PHP

1Route::get('/auth_login', function () { 2 session(["test_session" => "セッションテスト値"]); 3}); 4 5Route::get('/auth_check', function () { 6 dump(session("test_session", "セッション取得に失敗")); // 「セッションテスト値」が出力 7});

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

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

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

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

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

guest

回答1

0

自己解決

dumpが原因でした。
dumpを利用するとcookieが取得できません。
laravelのsessionはcookieを利用しているのでsessionが取得できない状態でした。

dumpを全てloggerに変えて確認するとユーザーのIDが遷移しても確認できました。

投稿2021/06/09 02:59

yookoko

総合スコア62

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問