gpt4 book ai didi

django - Python Social Auth为不同用户复制电子邮件

转载 作者:行者123 更新时间:2023-12-03 23:14:35 25 4
gpt4 key购买 nike

在我的网站上,可以通过以下方式登录:

  • 用户名和密码
  • 邮箱和密码
  • 谷歌授权 2
  • Facebook

  • 我在哪里使用系统内置的 django 用户和 python 社交身份验证。

    问题:

    假设我创建了以下帐户:

    用户名:losimonassi
    电子邮箱:lorenzosimonassi@gmail.com

    然后,当我尝试使用我的 gmail (lorenzosimonassi@gmail.com) 登录时,python social auth 会使用相同的电子邮件创建另一个用户。因此,当我尝试使用我的电子邮件登录时,身份验证系统会发现两个类似的电子邮件,这会引发错误。

    我试图找到一种方法,当用户尝试使用 gmail 登录时,会根据数据库检查他的电子邮件,如果它已经存在,则该过程会通过重定向和警报消息停止(我认为可以通过中间件)。

    但是当然对DB的检查应该只对其他后端用户和普通用户进行检查,以免阻塞自己的登录。

    我不想关联帐户。

    设置.py
    SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.user.create_user',
    #'social.pipeline.social_auth.associate_user',
    #'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
    )

    admin image

    最佳答案

    您可以选择通过添加内置的电子邮件地址来关联用户,但默认情况下在管道中不是事件的步骤。
    请注意,仅当您确定社交提供商会验证电子邮件地址时,才应执行此操作。否则,我可以使用您的电子邮件注册社交提供商,登录您的网站并访问您网站上的用户。

    Python 社交身份验证文档以及如何通过电子邮件关联用户:
    https://python-social-auth-docs.readthedocs.io/en/latest/use_cases.html?highlight=associate%20user#associate-users-by-email

    从上面的链接:

    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.user.get_username',
    'social_core.pipeline.social_auth.associate_by_email', # <--- enable this one
    'social_core.pipeline.user.create_user',
    'social_core.pipeline.social_auth.associate_user',
    'social_core.pipeline.social_auth.load_extra_data',
    'social_core.pipeline.user.user_details',
    )

    编辑:正如 Jack 在评论中所指出的,管道步骤的顺序很重要。

    关于django - Python Social Auth为不同用户复制电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40629794/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com