python social auth有条件地重定向到错误页面

时间:2014-02-03 16:09:01

标签: python-social-auth

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

  

LOGIN_ERROR_URL ='/ account / auth-failed /'

当出现问题时效果很好,它会正确地重定向。但是,我想在运行时有条件地指定LOGIN_ERROR_PAGE,因为我有一个scneario,它通过JSON或简单的HTML调用。

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

1 个答案:

答案 0 :(得分: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