【问题标题】:How to execute code after authentication in Django?如何在 Django 中进行身份验证后执行代码?
【发布时间】:2016-12-06 10:59:29
【问题描述】:

我想在用户登录我的网站后执行一项或多项功能。这怎么可能?我调查了中间件。 Djangobook 说我需要它来在 Django 处理的每个请求上运行一段代码。但是,我只需要在身份验证成功时运行代码。

注意:我正在使用 Django Allauth 进行身份验证,我没有任何自己的视图来登录用户。

【问题讨论】:

    标签: django django-authentication django-allauth django-signals django-middleware


    【解决方案1】:

    您需要访问 Allauth 的 signals。特别是用户登录信号

    allauth.account.signals.user_logged_in(request, user)
    
    Sent when a user logs in.
    

    所以在你的项目中添加类似下面的代码。

    from django.dispatch.dispatcher import receiver
    from allauth.account.signals import user_logged_in
    
    @receiver(user_logged_in, dispatch_uid="unique")
    def user_logged_in_(request, user, **kwargs):
        print request.user
    

    这段代码应该放在 django 启动时可能会被阅读的地方。 models.py 和 views.py 是不错的选择。

    【讨论】:

    • 您能否更新此答案以包含更多代码,以便清楚 receiveruser_logged_in 从何处导入,以及如何确保在“启动时”调用此函数“?毫无疑问,信号文档有某处,但在这个答案中包含它会帮助更多的人(包括我自己)
    【解决方案2】:

    根据官方documentation,有一个信号allauth.account.signals.user_logged_in 在用户登录时被触发。这可以达到您的目的。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2020-06-12
      • 2015-03-16
      相关资源
      最近更新 更多