Использование данных социальной аутентификации для входа в систему из встроенной системы входа

У меня есть как встроенный Laravel, так и социальная аутентификация. Предположим, если пользователь входит в систему с помощью Facebook, я сохраняю такие данные пользователя, как fb_id, username, email и т. д. к таблице пользователей, которая является подлинной из встроенной системы входа в систему. Таким образом, я могу использовать laravel Auth,

$fb_user = Socialite::driver('facebook')->user();
$user = User::firstOrCreate(['fb_id'=>$fb_user->id,'name' => $fb_user->name, 'email' => $fb_user->email]);
Auth::login($user, true);
return redirect('/');

Теперь в таблице users есть пользователь с именем пользователя и паролем NULL. Неужели никто не может войти, используя только имя пользователя из встроенного логина, если не требуется проверка пароля? ИЛИ что не так с моей концепцией здесь?

0

Решение

Никто не может войти в систему только с именем пользователя из встроенного входа, если нет
требуется подтверждение пароля?

Да, любой может войти.

Из комментариев:

Решение 1:

Пароль должен быть хеширован. Предполагая, что пустые пароли разрешены, они будут хэшировать что-то, что не является пустым (например, password_hash('',PASSWORD_DEFAULT); возвращает что-то вроде $2y$10$MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu‌​) Поэтому не должно быть никаких проблем с этим методом.

Решение 2:

У нас должно быть поле для пометки пользователя как отдельного источника аутентификации. Таким образом, если кто-то пытается войти в систему напрямую, используя эти данные, вы можете игнорировать строки с этим флагом при проверке учетных данных.

0

Другие решения

Недавно я получил эту же проблему. Я рекомендую это:

Когда пользователь выбирает социальные сети для входа на ваш сайт, создайте свою учетную запись на своем сайте, используя информацию, полученную с сайта социальных сетей после аутентификации, и зарегистрируйте их на своем сайте. Теперь, как только они войдут, покажите им всплывающее окно, чтобы установить пароль для своей учетной записи.

Теперь можно использовать как встроенную в Laravel, так и социальную аутентификацию для входа в систему.

-3

По вопросам рекламы [email protected]