【Laravel】Session store not set on request.

Laravel logo

Laravel開発中に以下のようなエラーが発生しました。

Session store not set on request.

Contents

環境

  • PHP v7.2.8
  • Laravel v5.5.40

エラー発生の手順

今回のエラーは以下のような手順で発生しました。

  • APIでログイン機能を搭載
    • routes/api.php上のルーティングへログイン機能を記載
  • ログインAPIに対してPOST
  • 該当のエラー発生

エラー発生の原因

今回、Laravelの標準で用意されているログインロジックを使用したのですが、該当ロジックにSessionを使用する記載がありました。

Laravel RoutingのapiミドルウェアではSessionStartの記載が書かれていないため、Sessionを上手く利用することができずエラーが発生したようです。

解決方法

解決方法は2つあります。

apiミドルウェアではなくwebミドルウェアを使用する

今回、routes/api.php上のルーティングへログイン機能を記載しましたが、これをroutes/web.phpへ移動するだけでOKです。

移動すればapiミドルウェアを使用することはなくなり、エラーが発生しないようになります。

apiミドルウェアの中にSessionを使用するコードを追記する

以下のようにapp/Http/Kernel.phpを修正すればエラーは発生しないようになります。

ただし、こちらのやり方は本来のapiミドルウェアの意味合いを薄めてしまうので、あまりオススメできません。

結構探したのですが、日本語のリファレンスが意外と見つからなかったので記事にしました。

参考文献

Scroll to top