2016-12-05 2 views
0

У меня есть как 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. Не можете ли кто-либо войти в систему только с именем пользователя из встроенного входа, если проверка пароля не требуется? Или что не так с моей концепцией здесь?

+0

Я не знаю о Laravel, но я уверен, что в таких ситуациях ваше приложение просто получает токен от facebook говорит, является ли пользователь действительным или нет. Только Facebook видит фактические учетные данные. Это называется федеративной идентичностью. И это хорошо. Вы были бы довольны множеством случайных, потенциально небезопасных сайтов, хранящих ваши учетные данные на facebook? И если вы храните учетные данные пользователя, что вы будете с ним делать, и как вы узнаете, изменили ли они свой пароль или истечет срок действия учетной записи? Facebook обрабатывает все, что для вас, все, что вам нужно, это ответ «да/нет». – ADyson

+0

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

+0

@ADyson Я не прошу fb предоставить мне пароль. если я храню свой идентификатор, email, имя, оставляя пароль пустым в аутентичной таблице базы данных моего приложения. Не мог ли он войти в обычную регистрационную форму? Или мне просто не нужно хранить какие-либо данные пользователя fb в аутентичной таблице? –

ответ

0

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

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

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

Решение 1:

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

Решение 2:

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

-3

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

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

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

+1

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

+0

@ADyson, так вы говорите, что разрешаете пользователю входить в ваш сайт, используя свою социальную учетную запись, но не создавая свою физическую учетную запись? Если вы не создаете свою учетную запись на своем веб-сайте, как вы войдете в систему? Это безумие. По моим сведениям, когда вы используете социальные сети для входа на любой сайт, они также создадут новую учетную запись на своем сайте. –

+0

Я не говорю, что не создавайте никаких записей о них, но зачем спрашивать у них пароль? Они решили войти в систему через социальные сети, что означает, что они не хотят беспокоиться о создании прямой учетной записи на вашем сайте, и они не хотят управлять отдельным логином и паролем. Просто создайте минимальные данные, которые вам нужны, и свяжите их с идентификатором социальной учетной записи. Если они могут войти в систему двумя разными способами, это все равно запутывает. – ADyson

Смежные вопросы