我正在使用 python social auth 和 django 通过社交媒体创建身份验证和注册。我已经定义了
LOGIN_ERROR_URL = '/account/auth-failed/'
当出现问题时它运行良好,它会正确重定向到那里。然而,我想在运行时有条件地指定 LOGIN_ERROR_PAGE,因为我有一个通过 JSON 或简单 HTML 调用的场景。
关于如何做到这一点的任何建议?
我正在使用 python social auth 和 django 通过社交媒体创建身份验证和注册。我已经定义了
LOGIN_ERROR_URL = '/account/auth-failed/'
当出现问题时它运行良好,它会正确重定向到那里。然而,我想在运行时有条件地指定 LOGIN_ERROR_PAGE,因为我有一个通过 JSON 或简单 HTML 调用的场景。
关于如何做到这一点的任何建议?
实现起来并不简单,但是您可以覆盖默认策略并在自定义版本中覆盖该get_setting()
方法,如下所示:
from django.conf import settings
from social.strategies.django_strategy import DjangoStrategy
class CustomDjangoStrategy(DjangoStrategy):
def get_setting(self, name):
if name == 'LOGIN_ERROR_URL' and self.request.is_ajax():
return '/auth/error/ajax'
else:
return getattr(settings, name)
将其放入模块并SOCIAL_AUTH_STRATEGY = app.module.CustomDjangoStrategy
在您的设置中定义。