Я внедряю систему онлайн-бронирования, используя 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']]);
}
перенаправить на Gmail:
public function redirectToGmail()
{
return Socialite::driver('google')->redirect();
}
Проблема в том, что uniqid
не существует в файле cookie после возврата из gmail только при первой попытке пользователя войти в систему:
public function login()
{
$user = Socialite::driver('google')->stateless()->user();
dd(Cookie::get());
}
Вот мой вывод dd(Cookie::get());
после возвращения из gmail:
array:4 [▼
"XSRF-TOKEN" => "DxiHpLSqB8juOkdLSptORyXs2XGggwWuY4tKJDkz"
"project_session" => "Gy7p3nhUNGF9D34FmWYxyvewb6juiDNSVLXWTDvS"
"__cfduid" => null
]
app/Http/Kernel.php
:\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
вprotected $middleware = []
или как промежуточное ПО вapi.php
- person Garrett   schedule 26.10.2019$middleware
изapp/Http/Kernel.php
, а также передал его как параметр промежуточного программного обеспечения вroute
. Но это все еще не работает в первый раз, когда я вызываю APIgmail
. - person Ali Tavafi   schedule 26.10.2019dd(Cookie::get())
- person Ali Tavafi   schedule 28.10.2019