会话在 Laravel API 中不起作用

Dar*_*ber 5 laravel-5

通常,我在使用网站(非 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');
  });

});
Run Code Online (Sandbox Code Playgroud)

当我访问/api/createSession它时返回session created,但是当我访问/api/getSession它时什么也不返回。

那么如何在 API 中使用会话呢?

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

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

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

提前致谢。

PS:我将使用Session来存储有关Cart的临时数据

San*_*yen 6

Middleware api不包含StartSession中间件,所以无法获取session。在这里检查: https: //github.com/laravel/laravel/blob/master/app/Http/Kernel.php#L33

您可以将中间件“web”添加到您的路由或添加\Illuminate\Session\Middleware\StartSession::class,到中间件 api,但我不推荐这样做。API 不应使用会话。

希望它可以帮助你。