2015-10-05 12 views
0

У меня есть страница, которая работала до этого, к сожалению, у меня нет последней резервной копии, поэтому я могу вернуться к самой последней рабочей версии страницы.Django не удалось поймать/обработать токен csrf

У меня есть страница, использующая allauth для обработки страниц для создания и входа в систему пользователей. Однако теперь, когда я заполняю форму для регистрации или входа в систему, я получаю 403 error, говоря CSRF verification failed. Request aborted.

Я проверил файлы cookie на странице, и есть csrf token. Я попытался удалить это и перезагрузить страницу. Печенье снова было воссоздано, но по-прежнему та же ошибка. Такая же ошибка также для входа на страницу admin, и я могу предположить только для любой другой страницы с form.

В мой файл настроек я включил django.middleware.csrf.CsrfViewMiddleware, поэтому я не согласен с тем, что вызывает эту ошибку.

Мои settings.py

import os, djcelery 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

SECRET_KEY = censored... 
DEBUG = False 
ALLOWED_HOSTS = ['0.0.0.0', '127.0.0.1', 'localhost'] 

# Application definition 
INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.sites', 
    'django.contrib.staticfiles', 
    'interface', 
    'chemrun', 
    'kombu.transport.django', 
    'chemicalizer.tasks', 
    'json', 
    'django_nvd3', 
    'djangobower', 
    'allauth', 
    'allauth.account', 
    'djangosecure', 
) 

MIDDLEWARE_CLASSES = (
    'djangosecure.middleware.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.middleware.security.SecurityMiddleware', 
) 

ROOT_URLCONF = 'chemicalizer.urls' 

TEMPLATES = [ 
    { 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': ['interface'], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.i18n', 
      'django.template.context_processors.media', 
      'django.template.context_processors.static', 
      'django.template.context_processors.tz', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
    }, 
] 
+1

Можете ли вы добавить шаблон/виды, в которых это происходит? – Jand

+0

Я использую allauth, поэтому это стандартный шаблон и вид для него. Я не изменил его. – Tobias

ответ

0

Похоже, что ваш код не посылая CSRF маркер обратно. Его нужно добавить в заголовок.

+0

Как мне это сделать? Я довольно новичок в Django, поэтому подробное описание очень полезно :) – Tobias

+0

CSRF - очень простая вещь. Сервер отправляет токен своему клиенту, а при следующем запросе клиент отправляет его обратно. Маркер CSRF отправляется через заголовок страницы. Если ваш сервер жалуется на токен CSRF, это означает, что он отсутствует (не отправлен) или отличается (возможно, проблемами конфигурации сервера). –

+0

Поскольку я вижу файл cookie в своем браузере, я считаю, что этого достаточно, чтобы показать, что он отправлен, но почему-то сервер не узнает его из-за проблем с конфигурацией. У вас есть идея относительно того, какие проблемы я могу искать? – Tobias

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