Я пытаюсь использовать 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();
}
});
Но это дает мне ошибку: объект # не имеет метода 'csrfToken'
Как я могу использовать csurf условно. Документация дает только информацию для использования на всех маршрутах в экспресс-приложении с
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);
Я даже синтаксиса не понимаю...