错误:配置错误的 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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSRF 测试 express form post?

Express.js csrf 令牌与 jQuery Ajax

无法在 Spring 中配置 CSRF 以免面临 CORS 错误

CodeIgniter 2,Ion Auth 在配置文件编辑时给出 CSRF 错误消息

node.js csurf 无效的 csrf 令牌

如何在 Express 中生成 CSRF 令牌?