Использование плоских страниц для создания простого приложения на Facebook, но проблема CSRF, вызванная подписанным подписью - PullRequest
2 голосов
/ 24 марта 2011

Я пытаюсь создать простое html-приложение для Facebook только на странице клиента. Я хотел бы использовать плоские страницы django, чтобы клиент и его сотрудники могли изменять содержимое приложения через администратора django своего сайта. Проблема в том, что Django возвращает 403 «Ошибка проверки CSRF. Запрос отменен». ошибка, когда Facebook пытается отправить свою собственную информацию POST и получить доступ к URL-адресу приложения.

Я уже знаю о декораторе @csrf_exempt, но я не уверен, как бы я применил его к представлению плоской страницы, так как оно находится в коде django.contrib. Более того, я бы хотел отключить защиту csrf только тогда, когда представление запрашивает определенный шаблон facebook.html (не шаблон default.html). Например, если бы был шаблонный тег {% crsf_exempt%}, это было бы идеально.

Может кто-нибудь придумать способ решить эту проблему? Или, может быть, мне стоит отказаться от идеи использования django-flatpages для обслуживания приложения facebook?

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Попробуйте использовать этот декоратор для ваших просмотров, которые называются facebook:

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt

это отключит защиту CSRF в этом представлении. Это помогает?

0 голосов
/ 06 января 2012

Я столкнулся с той же проблемой, что и вы. Я хотел набрать csrf для плоских страниц (но не для остальной части сайта) и получил следующее промежуточное ПО:

class DisableCSRFOnFlatPages(object):
    def process_request(self, request):
        try:
            FlatPage.objects.get(url=request.META.get('PATH_INFO'))
            setattr(request, '_dont_enforce_csrf_checks', True)
        except FlatPage.DoesNotExist:
            return

Добавьте его в свои настройки, и он должен отключить проверку csrf при появлении плоской страницы.

...