使用社交身份验证详细信息从内置登录系统登录

Using social authenticaion details to login from built in login system

我同时拥有 laravel 内置和社交身份验证。假设如果用户使用 facebook 登录,我将 fb_idusernameemail 等用户详细信息存储到用户 table 中,这可以从内置登录中验证system.This 我可以使用 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('/');

现在,用户 table 有一个用户名和密码为 NULL 的用户。如果不需要密码验证,任何人都不能仅使用内置登录名中的用户名登录吗?或者我的概念有什么问题?

最近我遇到了同样的问题。我推荐这个:

当用户选择社交媒体登录您的网站时,使用您从社交媒体网站获得的身份验证后的信息在您的网站上创建他们的帐户,然后登录您的网站。现在,一旦他们登录,就向他们显示一个 弹出窗口,为他们的帐户 设置密码。

现在,可以同时使用 Laravel 内置和社交身份验证进行登录。

Couldn't anybody login with just username from built in login if no password validations are required?

是的任何人都可以登录。

来自评论:

解决方案一:

密码应该是 hashed.Assuming 允许空密码,它们将散列为非空的东西(例如,password_hash('',PASSWORD_DEFAULT); returns 类似 y$MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu‌​ 的东西)因此这种方法应该没有真正的问题。

方案二:

我们应该有一个字段来将用户标记为来自单独的身份验证源。这样,如果有人尝试使用这些详细信息直接登录,您可以在检查凭据时忽略带有该标志的行