【问题标题】:Socially authenticated user using laravel Auth使用 laravel Auth 的社会认证用户
【发布时间】:2017-04-18 17:18:27
【问题描述】:

我将社交认证的用户详细信息存储到User(可认证)模型,并登录用户。这样我就可以使用Auth 的功能。

回调函数:

public function callback()
{
    $user = Socialite::driver('facebook')->user(); 

    $newUser=new User();
    $newUser->name=$user->name;
    $newUser->email=$user->email;
    $newUser->remember_token=$user->token;
    $newUser->save();

    Auth::login($newUser, true);
    return redirect('/');
}

但是,我意识到任何人都可以使用内置登录名的用户名登录,正常登录表单,如果不需要密码验证,因为我们没有将 Facebook 密码存储在我们的应用程序数据库中。在这种情况下,密码将为 NULL。

我想在用户注销后删除用户详细信息。

public function logout()
{ 
    User::find(Auth::user()->id)->delete();
    Auth::logout();
    return redirect('/')->with('message','logged out!');
}

这看起来不太好。让经过社交验证的用户使用Auth 的正确或更好的方法是什么?

【问题讨论】:

    标签: php laravel laravel-5.3 facebook-authentication social-authentication


    【解决方案1】:

    说明你没有仔细了解api的生命周期。 将用户重定向到 facebook 页面,让他们接受您的应用程序并登录。facebook 将提供用户的详细信息并将其存储 fb_id、电子邮件、电话等,然后创建它们。下次登录时确保 fb_id 与用户登录返回的匹配。所以注册后删除用户是没有意义的。

    【讨论】:

    • 如果不需要任何密码验证,任何人都无法仅使用内置登录中的用户名登录,因为我们不会将密码从 facebook 存储到 user 模型?
    • 是的,我们从 facebook id 登录,因为 facebook 仅在登录后提供 id,因此我们可以确定我们生成的 id 来自登录的用户,因此不需要密码,这就是您创建社交身份验证的原因登录不行吗?如果每次登录都需要密码,为什么要使用社交身份验证,那将没用?
    • 我的意思是在通过 facebook 验证后,我们将 fb id、名称、用户名存储在 User 模型中,但不存储密码。那么任何人都不能只使用内置登录而不是facebook的用户名登录吗?
    • haha :D 在社交身份验证中您从 facebook id 登录而不是用户名您检查 facebook id 是否存在于您登录的数据库中然后重定向如果 facebook id 不存在您只需创建并重定向它们
    • 我有社交登录和内置登录。如果用户从 facebook 登录并且我们存储该用户详细信息。任何人都不能使用内置登录的详细信息登录吗?我的意思是。
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2012-11-06
    • 2019-12-22
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多