我正在使用 Laravel Framework 5.6 版和 Laravel Socialite
实现一个在线预订系统来实现 gmail 登录。
我有一个方法可以检查用户是否在预订前登录,或者它将 reserveData
指定的 redirectUrl
和 uniqid
放在 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/