Страницы

Поиск по вопросам

пятница, 20 марта 2020 г.

Принцип и работа CSRF в Django

#django


Люди добрые, объясните на пальцах, каким образом работает и как использовать самому CSRF?
Я думал, что подключил middleware, добавил {% csrf_token %} в каждую post-форму +
подвесил context_instance=RequestContext(request) и все, но это счастье выдает 403
- CSRF verification failed. Уже голову сам себе задурил этой ерундистикой, объясните
мне как нубу, что как и куда :)    


Ответы

Ответ 1



Вроде бы все правильно. А попробуй включить не глобально, а оберни нужную вьюху в декоратор django.views.decorators.csrf.csrf_protect Ну и протестируй.

Ответ 2



Иногда, когда надо просто сделать и думать особо не хочется, а тем более копаться, я делаю просто, как в документации. Конкретно у меня так, во вьюхе: from django.core.context_processors import csrf Затем в самой вьюхе, перед тем как передается словарь в обработчик (у меня это делается через декоратор @render_to('template.html'), делаем так: ctx = { 'a': a, 'b': b, } ctx.update(csrf(request)) return ctx Тем самым дополняем наш словарь ctx, чем то, что нам не особо нужно знать. После этого в форму в шаблоне пишем:
{% csrf_token %} ....
Ну и если любопытно, то смотрим исходник, что за зверь это токой и что реально в html-коде страницы сгенерировалось.

Комментариев нет:

Отправить комментарий