错误:配置错误的 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 项目中的 main.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 错误