node.js – 禁用Express上某些请求的csrf验证

我正在使用Express框架编写一个带有Node.js的小型Web应用程序.我正在使用csrf中间件,但我想要禁用它的一些请求.这是我如何将其包含在我的应用程序中:

var express = require('express');
var app = express();

app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.cookieSession({secret: 'secret'}));
app.use(express.csrf());

我想设置没有csrf控件的POST路由.

有几种可能的方法.您基本上需要了解什么是最简单和最正确的规则来决定是否使用csrf中间件.如果你想要csrf大部分时间,除了一个小白名单的请求模式,请按照 this answer I have about conditional logging middleware中的示例(为方便起见).

var express = require("express");
var csrf = express.csrf();
var app = express.createServer();

var conditionalCSRF = function (req, res, next) {
  //compute needCSRF here as appropriate based on req.path or whatever
  if (needCSRF) {
    csrf(req, res, next);
  } else {
    next();
  }
}

app.use(conditionalCSRF);
app.listen(3456);

另一种方法可能只是在某个路径上使用中间件,如app.post(‘/ forms / *’,express.csrf()).您只需要找到一种表现力的方式,使中间件将被或不会被使用时清理干净.

相关文章
相关标签/搜索