Без Джанго Rest Framework, я использовал для создания запросов формы/POST, как так:Django Rest Framework + AngularJS: Правильный способ защиты CSRF?
<form id='loginForm' method="post" action="/register/">{% csrf_token %}
...
</form>
, но я смотрел с помощью Django Rest Framework и AngularJS на веб-интерфейсе, и я не был уверен, как использовать маркер CSRF, поэтому я решил провести некоторое исследование. Я наткнулся на этот сайт: http://blog.kevinastone.com/getting-started-with-django-rest-framework-and-angularjs.html, и если вы прокрутите вниз до «Interlude: AngularJS + защита CSRF» раздел, он говорит, что мне нужно добавить следующий сценарий:
// Add the CSRF Token
var app = angular.module('example.app'); // Not including a list of dependent modules (2nd parameter to `module`) "re-opens" the module for additional configuration
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common['X-CSRFToken'] = '{{ csrf_token|escapejs }}';
}]);
Затем я наткнулся на этот SO сообщение: Django csrf token + Angularjs, который говорит, что после добавления
django.middleware.csrf.CsrfViewMiddleware
моего MIDDLEWARE_CLASSES является settings.py, все, что мне надо добавить следующие строки
angular.module("myApp", [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}])
Обратите внимание, что, когда я смотрел на других SO сообщений, которые объясняют, как сделать аутентификации пользователей/регистрации, используя ФПИ и AngularjS (например, этот пост: User Authentication in Django Rest Framework + Angular.js web app) ответы не включают в себя следующие строки:
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
С тем, что , каков правильный способ добавления защиты CSRF с помощью Django Rest Framework и AngularJS?
Вам может понравиться http://stackoverflow.com/questions/18156452/django-csrf-token-angularjs –
@RajeshKaushik справа, я упомянул об этой ссылке в своем сообщении. В принципе, я хочу знать, что рекомендуемый способ сделать это, потому что, когда я оглядывался, я нашел несколько способов сделать это (я связан с разными способами, которые я видел/читал в своем сообщении). Я немного смущен, потому что разные люди делают это по-разному, и я не уверен, какой лучший подход. – user2719875
Извините, я не помню точную настройку, но я демонстрирую, как настроить ее в этом видео. https://www.youtube.com/watch?v=VZ8NIoLN-yQ] –