会话无法在Laravel API中运行

时间:2017-12-19 01:43:49

标签: laravel-5

通常我在使用Website(非API)时在会话中保存临时数据/数组。

今天我想用Laravel API做同样的事情(在会话中保存临时数据/数组)。

所以这是我的路线。

Route::middleware(['auth:api', 'isMember'])->group(function () {

  Route::get('createSession', function (){
    $a = Session::put('example', 'this is example session.');
    return "session created";
  });

  Route::get('getSession', function () {
    return Session::get('example');
  });

});

当我访问/api/createSession时,它会返回session created,但当我访问/api/getSession时,它不返回任何内容。

那么我如何使用API​​中的会话?

我认为为什么这不起作用,因为API使用基于令牌的身份验证而不是基于会话的身份验证,请参阅config/auth.php身份验证保护部分。

如果在API中使用会话被认为是不好的做法,您有什么建议在API中保存临时数据/数组以进行共享托管?

我到目前为止所尝试的是在Storage::disk(local)中保存数据/数组,但我认为这不是最佳做法。

提前致谢。

PS:我将使用Session存储有关购物车的临时数据

2 个答案:

答案 0 :(得分:1)

中间件api不包含StartSession中间件,因此您无法获得会话。请在此处查看:https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php#L33

您可以添加中间件" web"到您的路线或将\Illuminate\Session\Middleware\StartSession::class,添加到中间件api但我不推荐它。 API不应使用会话。

希望它可以帮助你。

答案 1 :(得分:0)

打开app/Http/Kernel.php,然后在数组\Illuminate\Session\Middleware\StartSession::class,上添加protected $routeMiddleware,并在protected $middlewareGroups enter image description here上的api上添加