【问题标题】:Error: misconfigured csrf - Express JS 4错误:配置错误的 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()) 之后...

标签: javascript node.js express csrf


【解决方案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());
    

    见以下cookiesession链接了解更多详情

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 2017-07-20
      • 2015-08-24
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      相关资源
      最近更新 更多