3

我正在编写一个单页应用程序MEAN stack,并使用express-sessionwithredis进行会话管理。

我想在客户的 cookie 中使用 scrf 令牌。

问题是当我添加csurf中间件时,它在 redis 中设置了一个带有名称的会话csrfSecret,但是我如何将它在 cookie 中发送给客户端?

中间件:

 app.use(csrf({}));

 app.use(function(req, res, next) {
     res.cookie('csrf-token', req.csrfToken());
     return next();
 });

并且csrf-token正在发送给客户端,但它什么也没做。我从模块收到 403 错误。

感谢您的任何回答或想法。

4

1 回答 1

4

如果要在客户端中创建 csrf cookie,则必须使用以下内容:

app.use(csrf({ cookie: true })

这将在客户端中创建一个令牌。如果您不向 csrf 函数传递任何选项,它将使用req.session. 如果您想在客户端保存 cookie,请记住您需要使用cookie-parsermodule.

您可以在项目的 github 链接中找到更多信息:https ://github.com/expressjs/csurf

于 2018-08-29T13:51:45.700 回答