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,以便以后在新表中进行匹配。