У меня есть токен csrf, сбрасываемый в переменную JS в окне. У меня есть форма, которая делает запросы AJAX (без Ember Data) от контроллера. По моей просьбе мне нужно передать токен csrf. Где рекомендуемые места, чтобы поместить этот знак в Ember? Прямо сейчас я хватаю его за окно, но понимаю, что это плохо для проверки. Моя первая мысль - зарегистрировать его в контейнере. Я довольно новичок в Ember, поэтому любая обратная связь будет высоко оценена!Где я должен поместить свой токен CSRF в мое приложение Ember?
ответ
Как @ Kingpin2k сказал, это действительно не нужно вводить в приложение ember. Вы можете сделать это, используя jquery, если вы делаете вызов ajax. Один простой способ:
- объявляет ваш csrf на стороне сервера внутри содержимого метатега.
- возьмите его из метатега по его названию.
- используйте его (например, как Заголовок) с jquery (если вы хотите использовать его с каждым запросом ajax, вы можете сделать это, используя
ajaxSetup
).
Нечто подобное.
<meta name="csrf-token" content="{{ csrf_token() }}">
<script type="text/javascript">
// Add x-csrf-token to all ajax request
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
В зависимости от того, используете ли вы Ember-cli с модулями или просто используете глобальное пространство имен, у меня разные настройки.
Если это глобальное пространство имен, я предпочитаю просто перебрасывать его в корень глобального пространства имен.
Если это cli, у меня часто есть сеансовое обслуживание, и я просто вытаскиваю его из окна там или в условиях тестирования, позволяю ему поступать из другого места, например. csrf = Testing.csrf || window.csrf
или что-то в этом роде.
Кроме того, при определенных обстоятельствах его действительно не нужно вводить в приложение ember. Вы можете просто подключить его к jquery для выполнения всех запросов ajax, а затем не думать об этом в отношении самого ember, поскольку он действительно не связан с ember, он больше связан с защитой связи, используемой в jquery с вашим сервер.