首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SOCIAL_AUTH_PROCESS_EXCEPTIONS设置

如何使用SOCIAL_AUTH_PROCESS_EXCEPTIONS设置
EN

Stack Overflow用户
提问于 2012-04-24 16:51:40
回答 1查看 864关注 0票数 1

我在一个网站上工作,该网站通过django-socialauth支持Facebook协会。这个库工作得很好,除非有时我需要处理“帐户已在使用”的ValueError。

从django-socialauth的documentation (搜索“exception”)可以看出,存在SOCIAL_AUTH_PROCESS_EXCEPTIONS设置来指定异常处理程序。所以我创建了一个虚拟函数:

代码语言:javascript
运行
复制
SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'myapp.utility.process_exceptions'

但是当我启动一个ValueError时,处理程序永远不会被调用。有没有人有过使用这个密钥SOCIAL_AUTH_PROCESS_EXCEPTIONS的经验?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-05-30 20:21:24

我认为您最好的选择是修改身份验证管道并创建此函数的您自己的版本,该函数位于social_auth/backend/ pipeline /Associate.py中:

def associate_by_email(details,*args,**kwargs):“返回与详细信息中返回的电子邮件地址相同的用户条目。”email = details.get('email')

代码语言:javascript
运行
复制
warn_setting('SOCIAL_AUTH_ASSOCIATE_BY_MAIL', 'associate_by_email')

if email and setting('SOCIAL_AUTH_ASSOCIATE_BY_MAIL', True):
    # try to associate accounts registered with the same email address,
    # only if it's a single object. AuthException is raised if multiple
    # objects are returned
    try:
        return {'user': User.objects.get(email=email)}
    except MultipleObjectsReturned:
        raise AuthException(kwargs['backend'], 'Not unique email address.')
    except User.DoesNotExist:
        pass

如果您替换此行:

提升AuthException(确认“后端”,“不是唯一的电子邮件地址”。)

对于pass语句,如果数据库中有重复的电子邮件(意味着它不能关联到任何特定的帐户),它将不会尝试通过电子邮件关联,而是传递到管道中的下一项。最终,这应该会导致创建一个新帐户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10294657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档