每当非用户的访问者向我的网站添加内容时,我只需创建一个虚拟用户帐户并将其ID存储在该访问者的会话中。
现在,当访问者最终使用Facebook,Google或任何其他OAuth登录时,我想将虚拟用户与真实用户帐户合并。我认为一个很好的方法是捕获登录信号。但是为了找到以前的虚拟用户帐户,我需要输入会话数据。我如何从处理程序中获取它?
如果不可能解决这个问题?
请注意,我希望能够使用各种登录应用程序,例如django-social-auth,所以我需要一个非常干净的解决方案。
感谢您的时间。
答案 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'])