我正在try 创建一个可以接受参数的中间件.如何做到这一点?

实例

app.get('/hasToBeAdmin', HasRole('Admin'), function(req,res){

})

HasRole = function(role, req, res, next){
   if(role != user.role){
      res.redirect('/NotInRole);
   }

   next();
}

推荐答案

function HasRole(role) {
  return function(req, res, next) {
    if (role !== req.user.role) res.redirect(...);
    else next();
  }
}

我还想确保我不会复制同一个函数的多个副本:

function HasRole(role) {
  return HasRole[role] || (HasRole[role] = function(req, res, next) {
    if (role !== req.user.role) res.redirect(...);
    else next();
  })
}

Node.js相关问答推荐

MongoServelSelection错误:服务器 Select 在30000 ms后超时

Mongoose更新许多不使用数组作为筛选器来更新记录

如何在Reaction应用程序中查看存储的斑点图像?

Next.js 路由不起作用 - 页面未正确加载

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

使用mongoose 创建新文档并仅取回选定的字段

WSL2 上需要脚本运行的 NPM 包的权限被拒绝

突然 React 无法执行create-react-app命令.为什么会发生这种情况,我该如何解决?

分块 WebSocket 传输

容器之间的 Docker HTTP 请求

AngularJS +sails.js

使用 Webpack 和 font-face 加载字体

NODEJS 进程信息

从 zip 文件在 AWS 中创建 lambda 函数

在 Node 中连接和缩小 JS 文件

使用 node 的内置调试器判断变量?

使用 Monit 而不是基本的 Upstart 设置有什么好处?

Node.js 中的 Streams3 是什么,它与 Streams2 有何不同?

如何创建安全(TLS/SSL)Websocket 服务器

AWS Lambda 函数写入 S3