2016-08-16 6 views
3

Каждый раз, когда я иду на страницу регистрации, я получаю эту ошибкуданные сессии развращенные Джанго

Session data corrupted 

, когда я пытаюсь, чтобы зарегистрироваться в любом случае, статус запроса POST является 302, но пользователь по-прежнему создается, но не сохраняет никаких сообщений для зарегистрированных пользователей.

Почему я получаю эту ошибку и как ее исправить?

Спасибо!

ответ

2

Вы получаете эту ошибку из-за этой линии: https://github.com/django/django/blob/master/django/contrib/sessions/backends/base.py#L109

Видимо, что-то пошло не так с шифрованием данных сессии.

Как это исправить? Я не уверен, у меня есть пара идей:

  • Вы используете собственный класс сеанса?
  • Вы используете свою сессию Django в другом проекте?
5

Извините за поздно на этот пост, но случайно, вы меняете или вы изменили secret_key переменный на ваш проект, сеансы, чтобы cyphered с помощью этой соли, так что если вы изменили его поврежденные все ваши сессии, не является большим делом, сессии, что существовавшие до этого необходимо войти в снова

0

Это работало для меня:

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

Смежные вопросы