2015-09-11 5 views
1

Я разрабатываю свое новое приложение Ember CLI. Я буду использовать Ember Simple Auth для авторизации. И мне также нужно использовать защиту CSRF. Я знаю, как вводить токен в запросы. Проблема заключается в том, как правильно вставить маркер в приложение.Вставить токен CSRF в приложение Ember CLI

Требуется, чтобы токен был создан на стороне сервера и был встроен в страницу. И он должен быть тем же, который API использует для проверки запросов.

В моем случае приложение API и Ember будет обслуживаться одним и тем же веб-сервером (скорее всего, Microsoft IIS, поскольку API построен с .NET MVC). Таким образом, веб-сервер должен генерировать токен и вставлять его каким-либо образом в приложение Ember после запроса его индексного файла.

Но Ember CLI генерирует статический файл index.html во время его процесса сборки. И я вижу только два способа вставки маркера.

Первый заключается в том, чтобы проанализировать файл Ember's index.html по каждому запросу и вставить метатег-маркер CSRF в нужное место. Мне это не очень нравится.

Во-вторых, для изготовления Ember CLI производятся index.aspx вместо index.html во время процесса сборки. В этом случае веб-сервер будет автоматически помещать маркер. Мне нравится этот путь лучше, но я не уверен, что это возможно. И если это так, то как это сделать?

Возможно, есть еще один лучший способ? Любая помощь и советы будут оценены.

ответ

1

Возможно реализовать вторую идею. Необходимо указать options.outputPaths.app.html свойство EmberApp в ember-cli-build.js:

const app = new EmberApp({ 
    outputPaths: { 
     app: { 
      html: 'index.aspx' 
     } 
    } 
}); 

Делая это приведет к Ember CLI писать index.aspx вместо index.html файловой системы:

screenshot of file manager

Вы можете read more about configuring output paths of your Ember CLI application in user-guide.

вас может также копать непосредственно в Ember CLI ember-app.jssource code, чтобы узнать, можете ли вы настроить параметры в соответствии с вашими потребностями.

Возможно ли сделать это зависящим от окружающей среды? Он отлично работает для сборки продукции. Но он не работает для разработки, так как Ember CLI не может обслуживать файлы .aspx. Поэтому было бы хорошо перезаписать выходные файлы только для производственных сборок и использовать общие для разработки и тестовые среды.

Вы можете достичь этого, проверив значение app.env. Так, в ember-cli-build.js, вместо передачи outputPaths в качестве аргумента, использование следующий метод:

const app = new EmberApp(); 

if (app.env === 'production') { 
    app.options.outputPaths.app.html = 'index.aspx'; 
} 

Таким образом, вы все еще получаете index.aspx в dist/ при строительстве для production, но development и test средах outputPaths варианты нетронутым и жить развитие/испытательные работы.

+0

Спасибо за ваш ответ! Можно ли сделать его зависимым от окружающей среды? Он отлично работает для производства. Но он не работает для разработки, поскольку Ember CLI не может обслуживать файлы '.aspx'. Поэтому было бы неплохо перезаписать выходные файлы только для производственных сборок и использовать общие для среды разработки и тестирования. –

+0

Отвечать в соответствии с вашими требованиями. –

+1

Отлично! Большое спасибо за вашу помощь. –