[英]Python/Django and sessions problems
對於我正在努力的Django會話,我遇到了一個奇怪的問題。 基本上我的會話是正確創建的,但由於某種原因我之后無法檢索session_data的內容。
這是基本的逐步指南
第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:由於某些原因,在ResponseRedirect期間userSecureId的值丟失。 此時我的Web應用程序檢測到我的cookie並且能夠檢索會話密鑰,但userSecureId返回'None'
HOMEPAGE: SESSION VALUE session_key: co5nknkz7kmka82f5130098gxoyvxkf8 userSecureId: None END HOMEPAGE: SESSION VALUE
只是為了確認我的會話在Django端正確配置,如果我解碼django_session的session_data,其中session_key ='co5nknkz7kmka82f5130098gxoyvxkf8',那么我能夠正確檢索該值(意味着userSecureId存在)
另一個問題是這個代碼在我的本地系統上完美運行。 所以我只是想知道我是否遺漏了什么。 我正在使用遠程數據庫來存儲會話信息,我已經確認我的遠程系統可以聯系數據庫。
我試圖更改我的settings.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
)並使用自動創建的csrf_token
,那么它已經安全了。
簡單地做
HttpResponseRedirect('http://mywebsite/portal/')
然后在該頁面的視圖函數中,檢查用戶是否已通過身份驗證(有一個@decorator)。
關於您的問題,您正在使用session
。
request.session['mykey'] = 'My Value'
在會話上創建一個鍵:值對,使用用戶的會話cookie值自動訪問。
如果未保存修改的會話值,您可以嘗試設置
request.session.modified = True
告訴Django會話數據發生了變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.