Chr*_*itz 12 session laravel laravel-5.2
我有一个Laravel 5.2项目,我正在使用它作为我正在构建的javascript客户端的模拟API.稍后将使用不同的Laravel项目替换模拟API功能.目前,我只需要能够提交API调用并获得预期的响应.
在我的模拟API中,我将身份验证状态存储在会话中.
我遇到的问题是我放入会话的值不是在http调用之间持久存在.
这看起来类似于我发现的不同stackoverflow帖子,但问题是我已经在web为我的API组使用中间件了.
我认为它可能是我的存储文件夹的权限(我使用默认的file会话驱动程序),vagrant是所有者并具有写访问权限:
另外,如果它是权限问题,我认为它会产生运行时错误.
还有什么我想念的吗?
这是以下内容Config::get('session'):
是的,这个StartSession类包含在web中间件组中:
以下是浏览器会话cookie与在Web服务器上创建的会话文件的镜头:
这是请求的内容:
我有同样的问题,并能够通过替换让它工作
Route::group(['middleware' => ['web']], function () {
...
});
Run Code Online (Sandbox Code Playgroud)
同
Route::group(['middlewareGroups' => ['web']], function () {
...
});
Run Code Online (Sandbox Code Playgroud)
当所有文档都表明我们使用时,不知道为什么会这样 ['middleware' => ['web']]
小智 1
这是因为对 Laravel 进行了更改,默认情况下所有路由都是“web”中间件的一部分,因此在 paths.php 文件中再次分配它最终会分配两次。
解决方案是从路由中删除“web”中间件,或者从 RouteServiceProvider 中删除自动分配。
Laravel 更新之前:
// /app/Providers/RouteServiceProvider.php
$router->group(['namespace' => $this->namespace], function ($router) {
require app_path('Http/routes.php');
});
Run Code Online (Sandbox Code Playgroud)
Laravel 更新后:
// /app/Providers/RouteServiceProvider.php
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web',
], function ($router) {
require app_path('Http/routes.php');
});
Run Code Online (Sandbox Code Playgroud)
请注意新更新如何自动将“web”中间件应用到所有路由。如果您想像以前一样继续使用 Laravel 5.2(在 paths.php 中手动分配“web”中间件),只需在此处将其删除即可。
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |