#環境
プログラミング初学者です。
理解が足りない部分だらけですが、よろしくお願いします。
php 7系
Laravel8系
OSはwindowsでdocker上で開発しています。
認証はLaravel Breezeを使っています。
#困っていること
ログアウトリンクを作り、アクセスすると、ブラウザで**Session store not set on request.**というエラーが出ます。
その後、ページをリロードするとログイン画面にリダイレクトされ。ログアウト自体は出来ます。
エラー画面のstack traceでは、Illuminate/Illuminate/Http/Request.phpのsession()メソッドに引っかかっているみたいなことが表示されています。
Requestphp
1 public function session() 2 3 { 4 5 if (! $this->hasSession()) { 6 7 throw new RuntimeException('Session store not set on request.'); //このエラー文が出てるみたいです 8 9 } 10 11 12 13 return $this->session; 14 15 }
また、AuthenticatedSessionControllerのdestroy()メソッド(ログアウト処理をするメソッド)のsession()->invalidate()が問題みたいな表示があります。
AuthenticatedSessionController
1 public function destroy(Request $request) 2 3 { 4 5 Auth::logout(); 6 7 8 9 $request->session()->invalidate(); //この部分 10 11 12 13 $request->session()->regenerateToken(); 14 15 16 17 return redirect('/'); 18 19 }
実際に$request->session()->invalidate();
をコメントにすると問題なくログアウトできました。
その他、ログインした状態でAuth::id()
やAuth::user()
を実行するとnullが返ってきます。
これも何か関係があるのではないかと思いますが、原因がさっぱりわかりません。
sessionドライバーはdatabaseに設定しています。
sessionsテーブルのuser_idカラムは、ログイン後にユーザーidが入り、ログアウト後はnullになるので特に問題ないように見えます。
開発自体は終盤に入ってきたので、ログアウト出来ないことで挫折するのは避けたいです。
どうかお力添えください。
あなたの回答
tips
プレビュー