我尝试在我的快递应用程序中的几条路线上使用 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 # has no method '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);
我什至不明白语法...