我有一个Django网站,我希望我的用户可以登录后,他们在我的应用程序与谷歌帐户。我使用了social-auth-app-Django包。但是现在我看到没有在我的网站上注册的人可以登录到网站。有什么问题吗?
发布于 2019-08-07 00:46:37
当我在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_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.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_AUTH_PIPELINE =‘'social_core.pipeline.user.user_details',)
您可以将验证代码放在oAuthCallback函数中,因为在使用oAuth进行身份验证后,用户会立即在该函数中被重定向。如果你不喜欢这个用户,你可以在那个时候重定向。或者,您可以中断管道see
或者,您也可以使用社交认证see的白名单功能
注册可以限制为一组由用户的电子邮件地址或域名标识的用户。要将其列入白名单,只需设置以下任何设置:
SOCIAL_AUTH__WHITELISTED_DOMAINS = 'foo.com','bar.com‘提供要列入白名单的域名列表。在任何允许的域上具有电子邮件地址的任何用户都将成功登录,否则将引发AuthForbidden。
SOCIAL_AUTH__WHITELISTED_EMAILS = 'me@foo.com','you@bar.com‘提供要列入白名单的电子邮件地址列表。电子邮件地址在此列表中的任何用户都将成功登录,否则将引发AuthForbidden。
https://stackoverflow.com/questions/57377289
复制相似问题