Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Node.js有条件地使用csurf和express 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,next) {  
  if (csrfExclusion.indexOf(req.path) !== -1){
    next();
  }
  else{
    csrf(req,next);
    next();
  }
});

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

但这给了我一个错误:对象#没有方法’csrfToken’

我怎样才能有条件地使用csurf.该文档仅提供在Express应用程序中的所有路径上使用它的信息

app.use(csrf());

但这不是我想要的,我想排除一些路线……

亲切的……马丁

更新:

最后它有效.我做了以下事情:

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

这有条件地添加了csrf中间件.
但我真的认为这样称呼它有点奇怪:

csrf()(req,next);

我甚至没有得到语法……

解决方法

根据 this,你需要将它分成两个路由器,一个使用csurf而另一个不使用.然后,您将中间件应用于路由器而不是应用程序.

var routes = express.Router();
var csrfExcludedRoutes = express.Router();

routes.use(csrf());

routes.get('/',function(req,res) {
    //has req.csrfToken()
});

csrfExcludedRoutes.get('/myApi',res) {
    //doesn't have req.csrfToken()
});

大佬总结

以上是大佬教程为你收集整理的Node.js有条件地使用csurf和express 4全部内容,希望文章能够帮你解决Node.js有条件地使用csurf和express 4所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: