使用python-social-auth时不显示登录错误页面

问题描述 投票:0回答:1

我正在使用social-app-django(python-social-auth的一部分)为我的Django网站的用户实现Facebook登录。我要求用户必须先在本地用户数据库中找到,然后才能使用Facebook登录。我已经替换了身份验证管道的auth_allowed部分,以执行此检查:

def auth_allowed(backend, details, response, *args, **kwargs):
    if not backend.auth_allowed(response, details) or not is_registered_user(response, details):
        raise AuthForbidden(backend)

其中is_registered_user()是一个自定义函数,用于检查用户是否在本地存在。

我的问题是,如果此检查失败并且抛出了AuthForbidden异常,则不会将用户重定向到登录错误URL。相反,该网站返回500。

错误页面URL在settings.py中配置如下:

LOGIN_ERROR_URL = "/"

我正在使用Django CMS,所以我也尝试实现覆盖SocialAuthExceptionMiddleware(它应该在标准设置中处理AuthForbidden异常)的中间件来返回CMS页面而不是来自settings.py的URL但不调用此中间件在这个过程中,据我所知。

有想法该怎么解决这个吗?我错过了一些配置吗?

python django python-social-auth
1个回答
1
投票

我想我解决了这个问题:我不小心用了

social.apps.django_app.middleware.SocialAuthExceptionMiddleware

代替

social_django.middleware.SocialAuthExceptionMiddleware

在引用异常处理中间件时。这个错误最有可能是在前一段时间从django-social-auth升级到python-social-auth / social-app-django时引入的。

© www.soinside.com 2019 - 2024. All rights reserved.