1

我正在使用 python social auth 和 django 通过社交媒体创建身份验证和注册。我已经定义了

LOGIN_ERROR_URL = '/account/auth-failed/'

当出现问题时它运行良好,它会正确重定向到那里。然而,我想在运行时有条件地指定 LOGIN_ERROR_PAGE,因为我有一个通过 JSON 或简单 HTML 调用的场景。

关于如何做到这一点的任何建议?

4

1 回答 1

3

实现起来并不简单,但是您可以覆盖默认策略并在自定义版本中覆盖该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在您的设置中定义。

于 2014-02-04T15:02:34.923 回答