【问题标题】:Django signals cancel actionsDjango 信号取消操作
【发布时间】:2014-09-27 10:39:27
【问题描述】:

我实现了 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) 之前进行验证,但如果可能,请告诉我。提前致谢。

【问题讨论】:

    标签: python django django-signals


    【解决方案1】:

    从技术上讲,您可以使用logout(request) 来做您想做的事情:https://docs.djangoproject.com/en/1.6/topics/auth/default/#django.contrib.auth.logout

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-28
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 2013-12-04
      相关资源
      最近更新 更多