【问题标题】:How to access session data in a signal handler?如何在信号处理程序中访问会话数据?
【发布时间】:2015-04-16 12:16:29
【问题描述】:

每当非用户访问者向我的网站添加内容时,我只需创建一个虚拟用户帐户并将其 ID 存储在该访问者的会话中。

现在,当访问者最终使用 Facebook、Google 或任何其他 OAuth 登录时,我想将虚拟用户与真实用户帐户合并。我认为一个好方法是捕捉登录信号。但是为了找到以前的虚拟用户帐户,我需要输入会话数据。如何从处理程序中获取它?

如果不能解决这个问题怎么办?

请注意,我希望能够使用各种登录应用程序,例如 django-social-auth,因此我需要一个非常干净的解决方案。

感谢您的宝贵时间。

【问题讨论】:

    标签: django django-authentication django-signals django-1.7 django-sessions


    【解决方案1】:

    登录信号包括当前的request 作为它的参数之一: https://docs.djangoproject.com/en/1.7/ref/contrib/auth/#module-django.contrib.auth.signals

    类似:

    @receiver(signal=user_logged_in)
    def merge_accounts(sender, request, user, **kwargs):
        user.update_details_from(request.session['your-dummy-data'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多