Google身份验证适用于未注册的用户吗?

时间:2019-08-06 13:32:35

标签: python django authentication

我有一个Django网站,我希望我的用户在我的应用程序中注册后可以使用google帐户登录。我是通过使用social-auth-app-Django软件包来完成的。但是现在我看到没有在我的网站中注册的人可以登录该网站。有什么问题吗?

1 个答案:

答案 0 :(得分:0)

当我在Django中实现oAuth时,文档使我挠头。我发现PHP / Laravel的实现要容易得多...

默认情况下,该行为是创建用户帐户。 Social Auth的用例是,它是一种允许用户自动注册您的应用程序的方法,因此您无需担心管理用户列表。许多具有反社交媒体登录名的网站(包括Stack Exchange)都是这样工作的。您需要覆盖管道

docs

  

#如果尚未找到一个用户帐户,请创建一个。   'social_core.pipeline.user.create_user',

     

#创建将社交帐户与用户相关联的记录。   'social_core.pipeline.social_auth.associate_user',

然后,您需要自行设置用户acl。您必须自己填写用户表(如果有,则填充1:1表),或者如果您要对GSuite域进行填充,则可以将电子邮件域列入白名单。

  

SOCIAL_AUTH_PIPELINE =(       'social_core.pipeline.social_auth.social_details',       'social_core.pipeline.social_auth.social_uid',       'social_core.pipeline.social_auth.auth_allowed',       'social_core.pipeline.social_auth.social_user',       'social_core.pipeline.social_auth.associate_user',       'social_core.pipeline.social_auth.load_extra_data',       'social_core.pipeline.user.user_details',)

您可以将验证代码放入oAuthCallback函数中,因为这是在通过oAuth进行身份验证后立即重定向用户的位置。如果您不喜欢该用户,则可以在那时进行重定向。或者,您可以中断管道see

或者,您可以使用Social Auth see的白名单功能

  

注册可以限于由他们的用户标识的一组用户   电子邮件地址或域名。要列入白名单,只需设置以下任意一项   设置:

     

SOCIAL_AUTH__WHITELISTED_DOMAINS = ['foo.com',   'bar.com']   提供要列入白名单的域名列表。任何使用者   在任何允许的域上使用电子邮件地址登录   成功,否则引发AuthForbidden。

     

SOCIAL_AUTH__WHITELISTED_EMAILS = ['me@foo.com',   'you@bar.com']提供要列入白名单的电子邮件地址列表。   此列表中具有电子邮件地址的任何用户都将成功登录,   否则会引发AuthForbidden。