Javascript 错误:配置错误的csrf-Express JS 4

Javascript 错误:配置错误的csrf-Express JS 4,javascript,node.js,express,csrf,Javascript,Node.js,Express,Csrf,我正在尝试在现有应用程序中启用Express 4的模块 我添加了以下代码: var csrf = require('csurf') ... app.use(csrf()); 我已经开始申请,我得到: Error: misconfigured csrf 和堆栈跟踪。没有别的了 我已经检查了文件,但不清楚。有人能帮忙吗?使用此模块所需的最低配置是什么?我找到了解决方案。对app.use(csrf())的调用必须在app.use(cookieParser())和app.use(session({

我正在尝试在现有应用程序中启用Express 4的模块

我添加了以下代码:

var csrf = require('csurf')
...

app.use(csrf());
我已经开始申请,我得到:

Error: misconfigured csrf
和堆栈跟踪。没有别的了


我已经检查了文件,但不清楚。有人能帮忙吗?使用此模块所需的最低配置是什么?

我找到了解决方案。对
app.use(csrf())
的调用必须在
app.use(cookieParser())
app.use(session({…})
之后设置。如果您将Redis用作会话存储,并且服务器未运行,则还将出现配置错误


当会话中间件和csurf中的sessionKey不相同时,我遇到了相同的错误。csurf使用会话作为默认会话密钥(如果未提供)。这里的sessionKey是demo session,它在会话中间件中应该是相同的。

似乎您需要指定cookie或使用express sessions。我是这样做的,我将app.use放在这里(csrf())在app.use(cookieParser())之后…我已经有了这个,但是我不得不把它放在主app.js文件的底部,就在
module.exports=app
之前。在我将redis添加为会话之前,它工作得很好。我使用MongoStore作为会话存储,也遇到了这个错误。非常感谢,你为我节省了时间。
app.use(
  sessions({
  cookieName: 'demo-session',
  secret: 'this is a secret msg',
  duration: 30 * 60 * 1000,
 })
);

app.use(csurf({ sessionKey: 'demo-session' }));