我一直在尝试对我一直在从事的个人项目进行csurf实现。我一直在各地搜索google,以尝试找出当我不使用Jade或EJS之类的模板引擎时如何在表单上实现csurf的方法。我的快速服务器也不是直接呈现页面,而是主要返回JSON。我像这样引用了我所有的前端

app.use(express.static(__dirname + '/www'));

我使用csurf的服务器代码如下所示
app.use(csurf());

app.use(function (req, res, next) {
    res.cookie('XSRF-TOKEN', req.csrfToken());
  next();
});

在表单的前端,html输入字段如下所示。我也在使用AngularJS,根据示例,我已经看到的我所要做的就是这个。
<input type="hidden" name="_csrf" value="{{csrftoken}}">

我在终端中收到以下错误
Error: invalid csrf token

如果我检查隐藏的输入,则显示内容。
<input type="hidden" name="_csrf" value="">

最佳答案

在 Controller 中,您需要将局部变量设置为等于csrf cookie的值

例如

.controller('YourCtrl', function($cookies, $scope) {
    $scope.csrftoken = $cookies._csrf
  }
);

为了使该示例正常工作,您需要包含ngCookies模块,因此在index.html中包含类似的内容
<script src="bower_components/angular-cookies/angular-cookies.js"></script>

然后将依赖项“ngCookies”添加到您的模块中。

09-13 08:36