Я реализовал защиту csrf (кросс-сайт-подделку) в выражении вроде:
...
app.use(express.csrf());
app.use(function (req, res, next) {
res.cookie('XSRF-TOKEN', req.csrfToken());
next();
});
...
Это отлично работает. Angularjs использовал токен csrf во всех запросах, сделанных через службу $http. Запросы, которые я выполняю через мое приложение angular, работают отлично.
Моя проблема заключается в тестировании этих конечных точек api. Я использую mocha для запуска своих автоматических тестов и модуля запроса для тестирования конечных точек api. Когда я делаю запрос к конечной точке, использующей csrf (POST, PUT, DELETE и т.д.) С использованием модуля запроса, он терпит неудачу, хотя он правильно использует файлы cookie и т.д.
Есть ли у кого-нибудь другое решение? Кому-нибудь нужна дополнительная информация?
Пример теста:
function testLogin(done) {
request({
method: 'POST',
url: baseUrl + '/api/login',
json: {
email: '[email protected]',
password: 'mypassword'
}
}, function (err, res, body) {
// do stuff to validate returned data
// the server spits back a 'FORBIDDEN' string,
// which obviously will not pass my validation
// criteria
done();
});
}