Laravel之Session存取踩坑记

Laravel之Session存取踩坑记

Laravel并不采用原生$_SESSION的方式去存储和读取。

1. 检查PHP设置,必须开启session和cookie。

2. 检查config/session.php文件是否有问题,通常默认为文件存储。

3. 因为Laravel使用'web'中间件启用Session,因此必须在路由文件routes/web.php将控制器加入到'web'中间件中。

4. 在app/Http/Kernel.php文件找到$middlewareGroups设置,'web'组中加入\Illuminate\Session\Middleware\StartSession::class让Session自动开启。

5. 不能将Session的读取代码写到控制器Controller的构造方法__construct中。

6. 如果使用put方法写入变量后,无法读取,要执行类似Session::save()强制保存。


这坑踩的有点深了,相信很多的网友未必遇到这么多。下面附送一段读写代码作为例子。

$alerts = Session::get('alerts', []);
var_dump($alerts);
Session::put('alerts', ['msg'=>'HelloSession']);
Session::save();
var_dump(Session::get('alerts', []));
Session::remove('alerts');
Session::save();


至此,Laravel之Session存取的坑总算填完了。


5