0
當會話第一次保存時,Django會話中間件只分配會話密鑰。我如何在自己的中間件中使用會話密鑰?如何在django的我自己的中間件中跟蹤用戶會話?
當會話第一次保存時,Django會話中間件只分配會話密鑰。我如何在自己的中間件中使用會話密鑰?如何在django的我自己的中間件中跟蹤用戶會話?
新會話的第一個請求沒有會話密鑰。爲了從第一次請求跟蹤用戶會話,使用自定義的標識符,這樣的事情:
import base32_crockford
import uuid
...
MY_SESSION_KEY='my_custom_session_key'
...
def process_request(self, request):
if MY_SESSION_KEY not in request.session:
if request.session.session_key is None:
my_key = base32_crockford.encode(uuid.uuid4()).lower()
request.session[MY_SESSION_KEY] = my_key
else:
request.session[MY_SESSION_KEY] = request.session.session_key
session_instance = request.session[MY_SESSION_KEY]
該代碼將使用現有的會話密鑰(如果存在),或創建一個新的隨機密鑰(我編碼與base32更容易複製粘貼的值)。如果您願意,可以直接使用UUID的字符串值。
請將此添加到您的原帖,並刪除該答案。 –
我回答了我自己的問題,以防其他人有類似的情況。 – Darren