我得到了#34; ForbiddenError:无效的csrf令牌"当我尝试运行我的注册测试时。 我确实从我的函数中获得了一个令牌,但我认为我执行错误了。 也许我必须以某种方式在标题中设置它?
我的测试文件
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:'mjo@test.com',
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());
感谢。