Laravel開発中に以下のようなエラーが発生しました。
Session store not set on request.
環境
- 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
ミドルウェアの意味合いを薄めてしまうので、あまりオススメできません。
結構探したのですが、日本語のリファレンスが意外と見つからなかったので記事にしました。