Rails + Emberjs: невозможно проверить подлинность токена CSRF

Я новичок в использовании рельсов в качестве API с интерфейсом Emberjs. Я получаю "Completed 422 Unprocessable Entity" и не могу проверить подлинность токена CSRF всякий раз, когда я пытаюсь выполнить запрос POST

Я видел пару постов и решений, говорящих о вставке этой функции

$(function() {
    var token = $('meta[name="csrf-token"]').attr('content');
    return $.ajaxPrefilter(function(options, originalOptions, xhr) {
        return xhr.setRequestHeader('X-CSRF-Token', token);
    });
});

Где подходящее место для реализации CSRF в проекте ember-cli?

ОБНОВЛЕНИЕ: 1.10.2015

мой app/adapters/application.js теперь выглядит примерно так:

import DS from 'ember-data';

export default DS.ActiveModelAdapter.extend({
  headers: Ember.computed(function(){
    var token = Ember.$('meta[name="csrf-token"]').attr('content');

    return {"X-CSRF-Token": token};
  })
});

Тем не менее, я все еще получаю те же сообщения об ошибках...

1 ответ

Самое простое решение - добавить это в файл манифеста:

#= require jquery-ujs

Или вы можете расширить свой адаптер приложения, чтобы всегда включать токен CSRF:

ApplicationAdapter = DS.RESTAdapter.extend
  headers:
    "X-CSRF-Token": $('meta[name="csrf-token"]').attr('content')
Другие вопросы по тегам