每次当我去我的注册页面,我收到这个错误
Session data corrupted
当我试图注册无论如何,POST请求状态是302,但用户仍然被创建,但没有保存任何电子邮件注册用户.为什么我会得到这个错误,我如何修复它?谢谢!
nbysray51#
很抱歉我来晚了,但是你有没有改变你项目中的SECRET_KEY变量?会话曾经使用这个salt加密,所以如果你改变了它,你已经破坏了所有的会话,但是不要担心!这不是一个大问题,最坏的情况是对于在此之前存在的会话,这些会话将需要再次登录,就是这样;)
55ooxyrt2#
你会得到这个错误是因为这一行:https://github.com/django/django/blob/master/django/contrib/sessions/backends/base.py#L109显然,会话数据的加密出了严重的问题。怎么解决呢?我不确定,不过我有几个想法:
xzv2uavs3#
有时,当您在同一运行时打开两个不同的项目时,会发生此问题。首先,停止服务器,完全关闭并退出。现在,再次打开服务器,并在全新的运行时上启动当前项目。
rjee0c154#
这对我很有效:
import base64 import hashlib import hmac import json def session_utoken(msg, secret_key, class_name='SessionStore'): key_salt = "django.contrib.sessions" + class_name sha1 = hashlib.sha1((key_salt + secret_key).encode('utf-8')).digest() utoken = hmac.new(sha1, msg=msg, digestmod=hashlib.sha1).hexdigest() return utoken def decode(session_data, secret_key, class_name='SessionStore'): encoded_data = base64.b64decode(session_data) utoken, pickled = encoded_data.split(b':', 1) expected_utoken = session_utoken(pickled, secret_key, class_name) if utoken.decode() != expected_utoken: raise BaseException('Session data corrupted "%s" != "%s"', utoken.decode(), expected_utoken) return json.loads(pickled.decode('utf-8')) s = Session.objects.get(session_key=session_key) decode(s.session_data, 'YOUR_SECRET_KEY'))
来源:http://joelinoff.com/blog/?p=920
xdyibdwo5#
我在本地工作,并通过删除127.0.0.1浏览器的cookie来修复“会话数据损坏”问题。
5条答案
按热度按时间nbysray51#
很抱歉我来晚了,但是你有没有改变你项目中的SECRET_KEY变量?会话曾经使用这个salt加密,所以如果你改变了它,你已经破坏了所有的会话,但是不要担心!这不是一个大问题,最坏的情况是对于在此之前存在的会话,这些会话将需要再次登录,就是这样;)
55ooxyrt2#
你会得到这个错误是因为这一行:https://github.com/django/django/blob/master/django/contrib/sessions/backends/base.py#L109
显然,会话数据的加密出了严重的问题。
怎么解决呢?我不确定,不过我有几个想法:
xzv2uavs3#
有时,当您在同一运行时打开两个不同的项目时,会发生此问题。
首先,停止服务器,完全关闭并退出。
现在,再次打开服务器,并在全新的运行时上启动当前项目。
rjee0c154#
这对我很有效:
来源:http://joelinoff.com/blog/?p=920
xdyibdwo5#
我在本地工作,并通过删除127.0.0.1浏览器的cookie来修复“会话数据损坏”问题。