Я сохраняю данные пользователя социальной аутентификации в User
(подлинная) модель, и войдите в систему пользователя. Так что я могу использовать функции Auth
,
Функция обратного вызова:
public function callback()
{
$user = Socialite::driver('facebook')->user();
$newUser=new User();
$newUser->name=$user->name;
$newUser->email=$user->email;
$newUser->remember_token=$user->token;
$newUser->save();
Auth::login($newUser, true);
return redirect('/');
}
Но потом я понимаю, что любой может войти в систему, используя только имя пользователя со встроенным логином, обычную форму входа в систему, если проверка пароля не требуется, поскольку мы не храним пароль facebook в нашей базе данных приложения. и пароль будет НЕДЕЙСТВИТЕЛЕН в этом случае.
Я думаю об удалении данных пользователя после выхода пользователя из системы.
public function logout()
{
User::find(Auth::user()->id)->delete();
Auth::logout();
return redirect('/')->with('message','logged out!');
}
Это не выглядит так хорошо. Как правильно или лучше использовать социально аутентифицированного пользователя? Auth
?
Это означает, что вы не понимаете жизненный цикл API тщательно.
Перенаправьте пользователя на страницу Facebook, чтобы он принял вашу заявку и вошел в систему. После того, как facebook предоставит данные пользователя и сохранит их, fb_id, email, phone и т. Д., Затем создайте их. В следующий раз, когда они войдут в систему, убедитесь, что fb_id соответствует возвращенному от пользователя логину. Поэтому удаление пользователя после регистрации не имеет смысла.
Других решений пока нет …