Node.js在Express 4中有条件地使用csurf

马奇罗

我尝试在我的Express应用程序中的仅几条路线上使用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。该文档仅提供在Express app中的所有路线上使用它的信息,

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);

我什至没有得到语法...

本财富

根据这一点,您需要将其分成两台路由器,一台使用csurf,一台不使用。然后,您将中间件而不是应用程序应用到路由器。

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

routes.use(csrf());

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

process.send在Node.js中有条件地定义

来自分类Dev

有条件地在Node.js中管道流

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

有没有一种方法可以简化使用node.js有条件地向对象添加值的方法?

来自分类Dev

限制Node JS Express中的api访问

来自分类Dev

Node.js Express HBS中的RegisterHelper

来自分类Dev

什么是 express node.js 中的 %s

来自分类Dev

使用Node.js Express的SEO

来自分类Dev

使用Express模块安装Node.js

来自分类Dev

使用Node JS Express的IMS LTI实现

来自分类Dev

使用Node.js Express的Rest API

来自分类Dev

如何使用Node JS Express响应xml?

来自分类Dev

使用Node.js Express的SEO

来自分类Dev

使用Node.js + Express的全局对象

来自分类Dev

使用Express模块安装Node.js

来自分类Dev

使用Node Express JS下载文件

来自分类Dev

Express 4 / Node JS-优雅地管理uncaughtException

来自分类Dev

Csurf无效的CSRF令牌Express / Node.js

来自分类Dev

在angular js中有条件地添加ng-checked属性

来自分类Dev

在Angular.js中有条件地显示链接

来自分类Dev

在React.js中有条件地设置html属性

来自分类Dev

如何在React JS中有条件地呈现错误?

来自分类Dev

阻止用户在Vue Js中有条件地更改复选框值?

来自分类Dev

基于状态在React JS中有条件地渲染内容

来自分类Dev

如何在 Vue.js 中有条件地渲染元素?

来自分类Dev

node.js / express.js中的变量范围

来自分类Dev

如何在Node JS / Express JS Project中读取文件?

来自分类Dev

Node.js(express.js)中的内存泄漏

来自分类Dev

在 Node.js/Express.Js 中打破无限循环