通常,我在使用网站(非 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的临时数据
Middleware api不包含StartSession中间件,所以无法获取session。在这里检查: https: //github.com/laravel/laravel/blob/master/app/Http/Kernel.php#L33
您可以将中间件“web”添加到您的路由或添加\Illuminate\Session\Middleware\StartSession::class,
到中间件 api,但我不推荐这样做。API 不应使用会话。
希望它可以帮助你。