我对Django会话有个奇怪的问题。基本上,我的会话是正确创建的,但由于某些原因,我无法检索会话数据的内容。在
以下是基本的分步指南
第一步:我进入主页,但(正如预期的那样)我还没有有效的会话。在
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返回“None”
HOMEPAGE: SESSION VALUE
session_key: co5nknkz7kmka82f5130098gxoyvxkf8
userSecureId: None
END HOMEPAGE: SESSION VALUE
为了确认我的会话在Django端配置正确,如果我解码了Django_session的session数据,其中session_key='co5nkkz7kmka82f5130098gxoyvxkf8',那么我就能够正确地检索值(意味着userSecureId存在)
另一个问题是这个代码在我的本地系统上运行得很好。所以我只是想知道我是否遗漏了什么。我正在使用一个远程数据库来存储会话信息,我已经确认我的远程系统可以与数据库联系。在
我试着改变我的设置.py(例如:添加SESSION_COOKIE_SECURE,SESSION_COOKIE_DOMAIN,SESSION_COOKIE_HTTPONLY,SESSION_SAVE_EVERY_REQUEST
但它们似乎都不会影响我的应用程序的一般行为
你知道可能是什么吗
不要将“安全令牌”放入URL路径。URL存储在浏览器历史记录和许多其他位置。它们是公共的,不是“安全的”。在
Django将为您创建一个会话ID,如果您将会话cookie切换到},那么它已经安全了。在
http_only
(在设置中使用SESSION_COOKIE_HTTPONLY=True
),并且使用自动创建的{简单地做
然后在该页面的view函数中,检查用户是否经过身份验证(有一个@decorator用于验证)。在
关于您的问题,您正确地使用了
^{pr2}$session
。在创建键:值对在使用用户的会话cookie值自动访问的会话上。在
如果未保存修改的会话值,可以尝试设置
告诉Django会话数据已更改。在
相关问题 更多 >
编程相关推荐