我有两个laravel内置和社会认证。假设如果在使用Facebook的用户登录后,我存储用户的细节,如fb_id
,username
,email
等方式向用户表,该表是从真伪内置登录system.This方式,我可以使用laravel Auth
。利用社会authenticaion细节登录由内置的登录系统
$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给我提供密码。如果我将他们的ID,电子邮件,名称留在我的应用程序数据库的可验证表中的空白密码。难道它不能从普通的登录表单登录吗?或者我应该只是不存储任何fb用户详细信息在可验证的表中? –