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);
Я даже не получаю синтаксис ...