当用户使用google或facebook django allauth注册时,如何在用户表中设置密码

时间:2017-11-05 12:36:32

标签: django django-allauth

通过覆盖SocialAccountManager

def save_user(self, request, sociallogin, form=None):
    """
    Saves a newly signed up social login. In case of auto-signup,
    the signup form is not available.
    """
    u = sociallogin.user
    u.set_unusable_password()
    if form:
        get_account_adapter().save_user(request, u, form)
    else:
        get_account_adapter().populate_username(request, u)
    sociallogin.save(request)
    return u

如何从社交帐户注册中获取密码

2 个答案:

答案 0 :(得分:0)

实际上,你不能。

Django Allauth不会为社交登录用户散列或存储密码。它不会在其结束时处理身份验证。

假设用户尝试在您的网站上进行谷歌登录,则身份验证会在谷歌服务器上进行,而不是在您的网站上。如果用户的密码正确,则LOGIN_REDIRECT_URL =" url-name /"在您的django项目中定义的用户将该用户重定向到URL。

答案 1 :(得分:0)

您无法获取密码。如果可以,或者那些社交应用程序共享其用户的密码,那么您和该社交应用程序都违反了用户隐私规则。在我看来,这是一种犯罪行为。

您可以做的唯一方法是让您的用户为您的网站设置新密码。向他们发送电子邮件以确认更改。但这意味着你必须为你的应用制作一条额外的路线,这没有任何意义。