即使使用 Web 中间件,Laravel 5.2 session 值也不会持久

标签 laravel session laravel-5

我有一个 Laravel 5.2 项目,我将其用作我正在构建的 javascript 客户端的模拟 API。模拟 API 功能稍后将替换为不同的 Laravel 项目。目前,我只需要能够提交 API 调用并获得预期的响应。

在我的模拟 API 中,我将身份验证状态存储在 session 中。

我遇到的问题是我放入 session 中的值在 http 调用之间不会持续存在。

session put is not persisting gif

这看起来类似于 a different stackoverflow post I found ,但问题是我已经在我的 API 组中使用了 web 中间件。

我认为这可能是我的存储文件夹的权限(我使用默认的file session 驱动程序),vagrant是所有者并具有写入权限:

storage directory permissions

另外,如果这是一个权限问题,我认为它会生成一个运行时错误。

我还缺少什么吗?

编辑

这是Config::get('session')的内容:

contents of config::get('session')

是的,StartSession 类包含在 web 中间件组中:

StartSession class in web middleware group

这是浏览器 session cookie 与在 Web 服务器上创建的 session 文件的对比:

browser cookie vs session file

以下是请求的内容:

request contents

最佳答案

我遇到了同样的问题,并通过替换使其正常工作

Route::group(['middleware' => ['web']], function () {
   ...
});

Route::group(['middlewareGroups' => ['web']], function () {
   ...
});

不知道为什么当所有文档都建议我们使用 ['middleware' => ['web']]

关于即使使用 Web 中间件,Laravel 5.2 session 值也不会持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34641229/

相关文章:

php - Laravel 6-MariaDB 10.1 : Illuminate\Database\QueryException : SQLSTATE[HY000] migration error

Laravel - 如何在 where 子句中编写多个条件?

session - 为什么要使用 gorilla/context 而不是 session 来进行用户身份验证?

php - Eloquent 下拉菜单

php - Laravel 和 Typeahead.js : retrieve category name but submit its ID to the database?

php - Laravel Eloquent 更新具有相同值但不同 ID 的多行

laravel - 如何在 Laravel 预加载中使用别名

ssl - 如何为 HTTPS 服务启用 SSL session ?

PHP session 固定/劫持

php - Laravel 5.0 Session 不能使用静态方法