通常我在使用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存储有关购物车的临时数据
答案 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)