Я успешно вошел в мое приложение Laravel с помощью социальной сети. Также я выхожу из системы, но снова захожу на страницу для входа в систему через Google, она автоматически аутентифицирует пользователя без запроса взаимодействия с пользователем.
Это маршруты:
Route::get('/redirect', 'Auth\LoginController@redirectToProvider');
Route::get('/handle-login', 'Auth\LoginController@handleProviderCallback');
Контроллер функции:
public function redirectToProvider()
{
return Socialite::driver('google')->redirect();
}
public function handleProviderCallback()
{
try {
$user = Socialite::driver('google')->user();
} catch (\Exception $e) {
return redirect('/login');
}
$existingUser = \App\User::where('email', $user->email)->first();
if($existingUser){
Auth::login($existingUser);
} else {
$newUser = new \App\User;
$newUser->name = $user->name;
$newUser->email = $user->email;
$newUser->googleId = $user->id;
$newUser->save();
Auth::login($newUser);
}
return redirect()->to('/home');
}
public function logout() {
Auth::logout();
Session::flush();
return redirect('/');
}
Моя проблема заключается в том, что при выходе из системы пользователь выходит из Laravel, но если я снова получу доступ к маршруту /redirect
, пользователь автоматически войдет в систему, и я хочу чтобы избежать этого, но попросите пользователя снова выполнить социальную регистрацию.
ПРИМЕЧАНИЕ. Я вижу, что при входе в систему с помощью Google логин также действителен и на google.com, поэтому я предполагаю, что выход из системы работает на моем домене, но остается действительным на google.com.