Django allauth,经过身份验证的用户,多个会话

时间:2016-03-21 17:25:20

标签: python django session oauth django-allauth

我使用Django-allauth实现了一个自定义OAuth适配器,以便从现有的代码库开始(这是一个Django 1.9项目)。我的想法是我的django用户通过授权代码流进行身份验证。 Oauth流程运行正常,我可以正确登录到我的django应用程序。

我有一个奇怪的问题,会话和一个用户有多个会话,我试图追踪Django或Django-allauth的特定行为。出于某种原因,每个用户一次只能有一个活动会话,这让我感到困扰,因为我不知道原始会话在哪个位置无效/刷新,我没有任何地方可以首先注销用户。

这就是我所做的:
*我使用浏览器A中的OAuth授权代码流登录我的django应用程序,访问资源,修改它。当我刷新浏览器A时,我仍然登录并保存了我的修改 *我使用浏览器B中的OAuth授权代码流登录我的django应用程序,我访问相同的资源(加载我在浏览器A上执行的修改),修改它。当我刷新浏览器B时,我仍然登录并保存了我的修改。 (所以在这一点上一切都按预期发生)
*现在我刷新浏览器A.我期望的是我仍然登录,因为我实际上没有注销支持,并且在我的测试中,会话不会过期很长一段时间。我应该能够刷新,仍然记录,并看到我在浏览器B上做了什么。但由于某种原因,我已经注销(请求用户是AnonymousUser),并且会话已经在某个时刻完全刷新(但是当?)。

我已经在user_logged_in和user_logged_out信号以及我的OAuth流程上设置了日志,而且据我所知,user_logged_out永远不会被发送(无论如何,django注销不应该使与用户相关的每个其他会话无效,不应该吗?)。 django-allauth代码中似乎没有任何request.session.flush()。

我可能不知道Django-allauth甚至Django本身的基本观点,我不知道。

有没有人对此有任何想法?

0 个答案:

没有答案