Python/Django和会话问题

2024-10-01 22:37:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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但它们似乎都不会影响我的应用程序的一般行为

你知道可能是什么吗


Tags: 数据djangokey用户nonevaluecookierequest
1条回答
网友
1楼 · 发布于 2024-10-01 22:37:52

不要将“安全令牌”放入URL路径。URL存储在浏览器历史记录和许多其他位置。它们是公共的,不是“安全的”。在

Django将为您创建一个会话ID,如果您将会话cookie切换到http_only(在设置中使用SESSION_COOKIE_HTTPONLY=True),并且使用自动创建的{},那么它已经安全了。在

简单地做

HttpResponseRedirect('http://mywebsite/portal/')

然后在该页面的view函数中,检查用户是否经过身份验证(有一个@decorator用于验证)。在

关于您的问题,您正确地使用了session。在

^{pr2}$

创建键:值对在使用用户的会话cookie值自动访问的会话上。在

如果未保存修改的会话值,可以尝试设置

request.session.modified = True

告诉Django会话数据已更改。在

相关问题 更多 >

    热门问题