2015-05-10 1 views
1

У меня есть токен csrf, сбрасываемый в переменную JS в окне. У меня есть форма, которая делает запросы AJAX (без Ember Data) от контроллера. По моей просьбе мне нужно передать токен csrf. Где рекомендуемые места, чтобы поместить этот знак в Ember? Прямо сейчас я хватаю его за окно, но понимаю, что это плохо для проверки. Моя первая мысль - зарегистрировать его в контейнере. Я довольно новичок в Ember, поэтому любая обратная связь будет высоко оценена!Где я должен поместить свой токен CSRF в мое приложение Ember?

ответ

4

Как @ Kingpin2k сказал, это действительно не нужно вводить в приложение ember. Вы можете сделать это, используя jquery, если вы делаете вызов ajax. Один простой способ:

  1. объявляет ваш csrf на стороне сервера внутри содержимого метатега.
  2. возьмите его из метатега по его названию.
  3. используйте его (например, как Заголовок) с 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> 
0

В зависимости от того, используете ли вы Ember-cli с модулями или просто используете глобальное пространство имен, у меня разные настройки.

Если это глобальное пространство имен, я предпочитаю просто перебрасывать его в корень глобального пространства имен.

Если это cli, у меня часто есть сеансовое обслуживание, и я просто вытаскиваю его из окна там или в условиях тестирования, позволяю ему поступать из другого места, например. csrf = Testing.csrf || window.csrf или что-то в этом роде.

Кроме того, при определенных обстоятельствах его действительно не нужно вводить в приложение ember. Вы можете просто подключить его к jquery для выполнения всех запросов ajax, а затем не думать об этом в отношении самого ember, поскольку он действительно не связан с ember, он больше связан с защитой связи, используемой в jquery с вашим сервер.