1
Я получаю «ForbiddenError: недопустимый токен csrf», когда пытаюсь запустить мой тест регистров. Я получаю токен от моей функции, но я думаю, что я не ошибаюсь. Может быть, мне нужно как-то установить его в заголовке?недействительный токен csrf в моем регистровом тесте с mocha
мой тестовый файл
var request = require('supertest');
var server = request.agent(config.TEST_URL);
// function to get the csrf token from the client
function extractCsrfToken (res) {
var $ = cheerio.load(res.text);
return $('[name=_csrf]').val();
}
describe('POST /register', function() {
var csrfToken;
beforeEach(function (done) {
server.get('/register')
.end(function (err, res) {
if (err) return done(err);
csrfToken = extractCsrfToken(res); // fetch the csrf token from client
done();
});
});
it('should accept the result', function (done, res) {
server
.post('/register')
.send({
_csrf: csrfToken,
username: 'testing',
email:'[email protected]',
password:'password' })
.expect(201)
.end(done);
});
});
Вот некоторая часть моих app.js с информацией о сеансе
var sessions = require('client-sessions');
app.use(sessions({
cookieName: 'session',
secret: 'random secret string',
}));
app.use(csrf());
Спасибо.
Возможного дубликат [Как проверить экспресс-форму поста с CSRF?] (Http://stackoverflow.com/questions/23123664/how-to-test-express-form-post-with-csrf) – Louis
У меня почти такая же настройка, как и у вас, клиент-сессии + csurf, но решение, выпущенное, не помогло мне. Можете ли вы, пожалуйста, сообщить мне, какой дополнительный шаг вы сделали, чтобы исправить это? – Larrydx
Ничего, я забыл отправить cookie сеанса отправки с моим POST '.set ('cookie', res.headers ['set-cookie'])'. Работает сейчас. – Larrydx