Django信号取消了动作

时间:2014-08-04 20:59:43

标签: python django django-signals

我在登录后实施了Django信号处理某些操作,但我也希望能够取消登录操作:

我有这个:

@receiver(user_logged_in)
def my_signal(sender, **kwargs):
    request, user = kwargs['request'], kwargs['user']
    # some actions

我想要这样的事情:

@receiver(user_logged_in)
def my_signal(sender, **kwargs):
    request, user = kwargs['request'], kwargs['user']
    if "any validation" == True:
        # some actions
    else:
        # cancel login

这可能吗?如果是这样,我该怎么办?好吧,您可以认为我可以在致电auth.login(request, user)之前进行验证,但请告知我是否可行。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在技术上使用logout(request)来执行您想要的操作:https://docs.djangoproject.com/en/1.6/topics/auth/default/#django.contrib.auth.logout

由于您似乎可以访问request中的my_signal对象,因此您应该可以这样做。

然而,这可能不是达到你想要的最佳方式。您不应该首先对用户进行身份验证,而不是对其进行身份验证,登录,然后将其启动。