O Node.js usa o csurf condicionalmente com o express 4
Eu tento usar o csurf em apenas algumas rotas no meu aplicativo expresso. essa é a abordagem:
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);
até tentei:
var conditionalCSRF = function (req, res, next) {
if (csrfExclusion.indexOf(req.path) !== -1){
next();
}
else{
csrf(req, res, next);
next();
}
});
e
var conditionalCSRF = function (req, res, next) {
if (csrfExclusion.indexOf(req.path) !== -1){
next();
}
else{
csrf();
next();
}
});
Mas isso me dá um erro: o objeto # não possui o método 'csrfToken'
Como posso usar o csurf condicionalmente. A documentação fornece apenas informações para usá-lo em todas as rotas no aplicativo expresso com
app.use(csrf());
Mas não é isso que eu quero, quero excluir uma rota ...
gentilmente ... Martin
ATUALIZAR:
finalmente funciona. Eu fiz o seguinte:
app.use(function(req, res, next){
if (csrfExclusion.indexOf(req.path) !== -1) {
next();
}
else {
csrf()(req, res, next);
});
Isso adiciona o middleware csrf condicionalmente. Mas eu realmente acho meio estranho chamá-lo assim:
csrf()(req, res, next);
Eu ainda não entendo a sintaxe ...