如何在信号处理程序中访问会话数据?

时间:2015-02-16 02:36:44

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

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

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

如果不可能解决这个问题?

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

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

登录信号包含当前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'])