Php 如何在laravel中与API guard同步会话数据
我正在电子商务应用程序中使用Php 如何在laravel中与API guard同步会话数据,php,laravel,api,laravel-session,Php,Laravel,Api,Laravel Session,我正在电子商务应用程序中使用laravel 5.8 我需要用户添加产品到购物车,而无需从移动应用程序登录,并在登录后将购物车数据与web同步。所以,当用户从web帐户登录时,他可以看到从移动应用程序添加的购物车项目 我正在使用数据库驱动程序进行会话 我的api在kernel.php 'api' => [ 'throttle:60,1', 'bindings', StartSession::class, 'sess
laravel 5.8
我需要用户添加产品到购物车,而无需从移动应用程序登录,并在登录后将购物车数据与web同步。所以,当用户从web帐户登录时,他可以看到从移动应用程序添加的购物车项目
我正在使用数据库驱动程序进行会话
我的api在kernel.php
'api' => [
'throttle:60,1',
'bindings',
StartSession::class,
'session.exists',
],
CheckExistSession中间件
public function handle($request, Closure $next)
{
$user = Auth::user();
$uuid = $request->header('UUID', 0);
$session = $request->session();
if (($user || $uuid) && config('session.driver') == 'database') {
$exists = DB::table('sessions')
->where(function ($q) use ($uuid, $user) {
if ($user) {
$q->where('user_id', $user->id);
}
$q->orWhere('uuid', $uuid);
})
->where('id', '!=', $session->getId())
->first();
if ($exists) {
// set the previous session as current session
$session->setId($exists->id);
}
}
if ($uuid) {
DB::table('sessions')->where('id', $session->getId())->update(['uuid' => $uuid]);
}
return $next($request);
}
邮递员和失眠症都很好,但当使用真正的移动设备时,它会根据每个请求创建一个新会话,直到用户登录并且会话表中没有保存UUID
此代码不起作用
DB::table('sessions')->where('id', $session->getId())->update(['uuid' => $uuid]);
登录后,会话ID将更改。您需要使用cookie并在其中存储一个ID,以便以后在新表中进行匹配。