Node.js использует csurf условно с экспресс 4

Я пытаюсь использовать csurf только на нескольких маршрутах в моем экспресс-приложении. это подход:

var express       = require('express');
var session       = require('express-session');
var csrf          = require('csurf');

// some more stuff

var csrfExclusion = ['/myApi','/unsecure'];

var app   = express();

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf();
  }
});

app.use(conditionalCSRF);

даже попробовал

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf(req, res, next);
    next();
  }
});

а также

var conditionalCSRF = function (req, res, next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf();
    next();
  }
});

Но это дает мне ошибку: у Object # нет метода 'csrfToken'

Как я могу использовать csurf условно. Документация только дает информацию для использования его на всех маршрутах в приложении Express с

app.use(csrf());

Но это не то, что я хочу, я хочу исключить какой-то маршрут ...

любезно ... мартин

ОБНОВИТЬ:

наконец это работает. Я сделал следующее:

app.use(function(req, res, next){
  if (csrfExclusion.indexOf(req.path) !== -1) {
  next();
}
  else {
  csrf()(req, res, next);
});

Это добавляет промежуточное ПО csrf условно. Но я действительно считаю странным называть это так:

csrf()(req, res, next);

Я даже не получаю синтаксис ...

Ответы на вопрос(2)

Ваш ответ на вопрос