php - gmail登录后cookie被删除

标签 php laravel cookies laravel-socialite

我正在使用 Laravel Framework 5.6 版和 Laravel Socialite 实现一个在线预订系统来实现 gmail 登录。

我有一个方法可以检查用户是否在预订前登录,或者它将 reserveData 指定的 redirectUrluniqid 放在 redis 和 cookie 中,以便在登录后获取它:

public function checkAuthentication(Request $request)
{
    $reserveData = json_decode($request->input('reserveData'), true);
    Session::put('reserveData', $reserveData);

    if (!Auth::check()) {
        $reserveID = uniqid();
        Cookie::queue(Cookie::forget('reserveID'));
        Cookie::queue(Cookie::make('reserveID', $reserveID, 1440));

        $stepData = [
            'redirectUrl' => route('reserve', ['productId' => $reserveData['productId']]),
            'reserveData' => $reserveData
        ];

        Redis::set($reserveID, serialize($stepData));

        return redirect()->route('redirectToGmail');
    }

    return redirect()->route('reserve', ['productId' => $reserveData['productId']]);
}

redirectToGmail :
public function redirectToGmail()
{
    return Socialite::driver('google')->redirect();
}

问题是,仅当用户第一次尝试登录 从 gmail 返回后,cookie 中不存在 uniqid :
public function login()
{
    $user = Socialite::driver('google')->stateless()->user();
    dd(Cookie::get());
}

这是我从 gmail 返回后的 dd(Cookie::get()); 输出:
array:4 [▼
    "XSRF-TOKEN" => "DxiHpLSqB8juOkdLSptORyXs2XGggwWuY4tKJDkz"
    "project_session" => "Gy7p3nhUNGF9D34FmWYxyvewb6juiDNSVLXWTDvS"
    "__cfduid" => null
]

最佳答案

登录Gmail前后网站的url是一样的吗?
如果 url 更改,cookie 将被重置。

关于php - gmail登录后cookie被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58506038/

相关文章:

PHP使用@转义错误报告

javascript - 创建提交按钮返回数据的javascript函数

php - 我想知道如何在我的 Controller (laravel)中不使用 faker 技术的情况下在我的数据库 Mysql5.7 中获取一些字段

laravel - 将 Laravel Passport 访问 token 存储在 cookie 中

android - cookie 是移动应用程序中 session 管理的好主意吗?

php - Laravel 5.1 在表单请求验证之前修改输入

PHP:即使未单击提交按钮,变量也会显示值

php - 将 .js 文件包含到 php 中时出现问题

php - Laravel - SQLSTATE [42000] : Syntax error or access violation: 1064 on migration

php - 两个域,一个站点,一个 SSL 结帐。如何获得 cookies ?