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

Posted

技术标签:

【中文标题】错误:配置错误的 csrf - Express JS 4【英文标题】:Error: misconfigured csrf - Express JS 4 【发布时间】:2014-07-22 18:00:25 【问题描述】:

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

我添加了以下代码:

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

app.use(csrf());

我已经开始我的申请,我得到了:

Error: misconfigured csrf

和堆栈跟踪。没有别的了。

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

【问题讨论】:

看来您要么需要指定 cookie 要么使用快速会话。 我做了,我把 app.use(csrf()) 放在 app.use(cookieParser()) 之后... 【参考方案1】:

我找到了解决方案。对app.use(csrf()) 的调用必须设置在app.use(cookieParser()) AND app.use(session(...) 之后。

【讨论】:

我已经有了这个,但我必须把它放在我的主 app.js 文件的底部,就在 module.exports = app 之前。在我将 redis 添加为会话之前工作正常。【参考方案2】:

如果您将 Redis 用作会话存储并且服务器未运行,您也会收到配置错误的错误。

https://github.com/expressjs/csurf/issues/73

【讨论】:

我在使用 MongoStore 作为会话存储时也遇到了这个错误。非常感谢,您节省了我的时间。【参考方案3】:
app.use(
  sessions(
  cookieName: 'demo-session',
  secret: 'this is a secret msg',
  duration: 30 * 60 * 1000,
 )
);

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

当会话中间件和 csurf 中的 sessionKey 不同时,我得到了同样的错误。如果未提供,csurf 使用 session 作为默认 sessionKey。这里的 sessionKey 是 demo-session,在你的 session 中间件中应该是一样的。

【讨论】:

【参考方案4】:

第一步:安装 express-session 和 cookie-parser

npm i express-session
npm i -D @types/express-session
npm i cookie-parser
npm i -D @types/cookie-parser

第 2 步:在您的 Nest js 项目中的 ma​​in.ts 文件中 添加以下代码行

app.use(cookieParser());
app.use(
  session(
    secret: 'your-secret',
    resave: false,
    saveUninitialized: false,
  ),
);
app.use(csurf());

见以下cookie 和session链接了解更多详情

【讨论】:

以上是关于错误:配置错误的 csrf - Express JS 4的主要内容,如果未能解决你的问题,请参考以下文章