我有一个奇怪的问题,我正在努力与Django会议。基本上我的会话创建正确,但出于某种原因,我无法检索后会话数据的内容。Python/Django和会话问题
下面是基本的一步一步的指导
第1步:我访问网页和(预期)我没有一个有效的会话呢。
HOMEPAGE: SESSION VALUE session_key: None userSecureId: None END HOMEPAGE: SESSION VALUE
第2步:我登录时,产生的Django的一个会话,然后将用户重定向到他的部分
这里是如何生成我的会议,以及如何重定向我的用户: context = RequestContext(request) request.session['userSecureId'] = verify_token['userSecureId'] request.session.set_expiry(3600) return HttpResponseRedirect('http://mywebsite/portal/'+verify_token['userSecureId'], context)
这是我在日志中找到(我只是做了HttpResponseRedirect之前打印此右):
AUTH PAGE: SESSION VALUE session_key: None userSecureId: 4d9f6a58-0ad4-4a4b-8191-bbfc8e397afe END AUTH PAGE: SESSION VALUE
所以截至目前,Django的创造了我的会话,并能够检索userSecureId
步骤3的值:由于种种原因,userSecureId的价值ResponseRedirect过程中丢失。这时我的web应用程序检测我的cookie,并能够检索会话密钥,但userSecureId回报“无”
HOMEPAGE: SESSION VALUE session_key: co5nknkz7kmka82f5130098gxoyvxkf8 userSecureId: None END HOMEPAGE: SESSION VALUE
只是为了确认我的会议是在Django的侧面配置正确,如果我解码session_data是的django_session其中session_key ='co5nknkz7kmka82f5130098gxoyvxkf8',然后我能够正确检索值(意味着userSecureId存在)
另一个问题是此代码在我的本地系统上完美工作。所以我只是想知道我是否错过了一些东西。我正在使用远程数据库来存储会话信息,并且我已经确认我的远程系统可以联系数据库。
我试图改变我的settings.py(例如:添加SESSION_COOKIE_SECURE,SESSION_COOKIE_DOMAIN,SESSION_COOKIE_HTTPONLY,SESSION_SAVE_EVERY_REQUEST
但他们都不似乎影响我的应用程序的一般行为
上什么可能是
感谢您的建议。然而,这并不能解释为什么当我远程托管我的django应用程序时,我无法在ResponseRedirect之后检索会话的值(如果我重定向到/ portal/或只是/ portal)。 –
PERPO
我是否正确理解会话值被写入会话存储数据库? – C14L
你是对的。会话值存储在我的数据库中。这些数据包括一些用户ID信息,电子邮件和我的服务所需的其他各种信息。我们的想法是,只要有可能将用户指向某个特定的url(检查userSecurId是否存在以确认用户被批准使用该应用),就可以检索此值。 – PERPO