2016-12-19 16 views
0

Я хочу включить CSRF в приложение SailsJS и Angular 2, но у меня возникли бесконечные проблемы.Sails JS CSRF Token отличается при каждом вызове

Угловое приложение находится на странице, доступной только после входа пользователя в систему, контролируемой политикой Sails. Затем I http.get маркер CSRF с маршрута /csrfToken и сохраните его, добавив его в заголовки HTTP при выполнении POST.

Я постоянно получаю ошибки CSRF рассогласования, и я, наконец, понял, что /csrfToken маршрут возвращается другое значение, каждый раз, как от http.get, а также при обращении к URL из браузера.

Непонятно, что это происходило, когда я прошел через this tutorial (см. 00:30) для многостраничного приложения, в котором значение CSRF представлено как скрытое поле в форме, и не возникает чтобы упоминать о том, как изменить это поведение в документации Sails.

Как настроить паруса, чтобы он поддерживал одно значение CSRF для сеанса?

UPDATE: Это теперь

Я сделал мое изменение ответ, как советовал работать.

+0

Пожалуйста, отредактируйте и ответьте на свой вопрос, а затем выберите его как одобренный ответ. Это поставит вопрос, как и должно быть. –

ответ

0

Оказалось, что были разные проблемы, которые вызывали мои проблемы.

Мой код настолько фрагментирован, что я не понимал, что ссылаюсь на более старую функцию, которая помещала CSRF в заголовок неправильно.

Я откатил кучу клиентского кода, а затем волшебным образом значение CSRF оставалось согласованным между вызовами Ajax и также корректно работало в запросе POST.

Так что, наверное, в моем фрагментированном коде было что-то, что привело к тому, что токен CSRF изменился между вызовами API, но я не знаю, что это было.

Посещение /csrfToken в браузере по-прежнему производит разные результаты каждый раз, но, похоже, это не влияет на вызовы API.

EDIT

я обнаружил, что CSRF меняется с каждым запросом к /csrfToken. Одна из моих ошибок заключалась в том, что после того, как я сохранил значение CSRF, в первый раз, когда я (случайно) снова запросил новый /csrfToken, который затем аннулировал сохраненное значение. Использование сохраненного значения приведет к ошибке несоответствия CSRF при выдаче нового значения.

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

  • Нет связанных вопросов^_^