我正在我的Web应用程序上设置CSRF预防,并且我已经坐了一段时间了。
我已经阅读了很多其他问题,提出了类似的要求,我的代码应该与解决方案做同样的事情,但是由于某些我不知道的原因而无法正常工作。
这是我在路由器中设置csurf的方法:
const bodyParser = require('body-parser');
router.use(bodyParser.urlencoded({ extended: false }));
const cookieParser = require('cookie-parser');
router.use(cookieParser());
const csrf = require('csurf');
router.use(csrf({ cookie: true }));
这是render函数的一部分,它将令牌发送到视图:
csrfToken: req.csrfToken()
这是在我的表单中使用令牌的地方:
<input type="hidden" name="_csrf" value="<%= csrfToken %>">
Cookie中的值与输入中的值不同,因此我得到了无效的令牌错误。
更新: 我添加了以下内容:
router.use(function (req, res, next){
res.cookie('_csrf', req.csrfToken());
next();
});
Cookie等于输入值,但是我仍然遇到相同的错误。