我正在使用express和nom的csurf模块。最近3天一直都很完美,但现在每次提交表单时都会出现无效的csrf令牌错误。我使用的是最新版本的csurf和express。
我的app.js设置:
var csrf = require('csurf');
...
app.use(csrf());
...
app.use(function (req, res, next) {
res.locals = {
csrf: req.csrfToken(),...
我的Jade模板:
form(role='form', method='post', action='/auth')
input(type='hidden', name='_csrf', value='#{csrf}')
...
input.btn.btn-success.btn-block(type='submit')
以下是我经常遇到的错误:
Error: invalid csrf token
at createToken (/Users/.../.../.../.../node_modules/csurf/index.js:107:19)
at /Users/.../.../.../.../node_modules/csurf/index.js:91:7
at Object.<anonymous> (/Users/.../.../.../.../node_modules/csurf/node_modules/csrf-tokens/node_modules/uid-safe/index.js:13:7)
at Object.ondone (/Users/.../.../.../.../node_modules/newrelic/node_modules/continuation-local-storage/node_modules/async-listener/glue.js:177:31)
据我理解,这个错误是在启动服务器后出现的,而且会得到“没有打开的连接”错误。
use(app.router)
之前调用csrf
中间件和对res.locals
的赋值。 - adamK