У меня есть как 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('/');
Теперь таблица пользователей имеет пользователя с именем пользователя и паролем NULL. Не можете ли кто-либо войти в систему только с именем пользователя из встроенного входа, если проверка пароля не требуется? Или что не так с моей концепцией здесь?
Я не знаю о Laravel, но я уверен, что в таких ситуациях ваше приложение просто получает токен от facebook говорит, является ли пользователь действительным или нет. Только Facebook видит фактические учетные данные. Это называется федеративной идентичностью. И это хорошо. Вы были бы довольны множеством случайных, потенциально небезопасных сайтов, хранящих ваши учетные данные на facebook? И если вы храните учетные данные пользователя, что вы будете с ним делать, и как вы узнаете, изменили ли они свой пароль или истечет срок действия учетной записи? Facebook обрабатывает все, что для вас, все, что вам нужно, это ответ «да/нет». – ADyson
Надеюсь, вы хешируете пароли. Предполагая, что пустые пароли разрешены, они будут хешем для чего-то, что не является пустым (например, 'password_hash ('', PASSWORD_DEFAULT),' возвращает что-то вроде '$ 2y $ 10 $ MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu'). Поэтому не должно быть реальной проблемы с ваш метод. –
@ADyson Я не прошу fb предоставить мне пароль. если я храню свой идентификатор, email, имя, оставляя пароль пустым в аутентичной таблице базы данных моего приложения. Не мог ли он войти в обычную регистрационную форму? Или мне просто не нужно хранить какие-либо данные пользователя fb в аутентичной таблице? –