代码之家  ›  专栏  ›  技术社区  ›  欧阳维杰

我应该为不同类型的用户使用分离的express服务器吗

  •  1
  • 欧阳维杰  · 技术社区  · 7 年前

    我正在尝试使用node。js+express。js构建web服务器。他们在我的网站上有两种类型的用户:普通用户和管理者。经理有权在我的数据库的某些字段中写入数据,但普通用户只能读取它们。

    所以我的问题是:我应该为管理者和普通用户分别使用express server的实例化吗?所以他们使用不同的端口,不会互相干扰?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aaron Rumery    7 年前

    有许多方法可以设置后端节点的用户权限。js服务器,但基于角色设置单独的服务器实例不应是其中之一。NPM生态系统中已经有许多软件包可以帮助您解决问题,但根据具体情况,您可以自己为Express编写一个简单的中间件。js解决您的问题。示例:

    export default function permit(...allowed) {
      const isAllowed = role => allowed.indexOf(role) > -1;
    
      // return a middleware
      return (req, res, next) => {
        if (req.user && isAllowed(req.user.role))
          next(); // role is allowed, so continue on the next middleware
        else {
          response.status(403).json({message: "Forbidden"}); // user is forbidden
        }
      }
    }
    
    // Use as so
    app.use("/api/private", permit("admin"));
    app.use(["/api/foo", "/api/bar"], permit("owner", "employee"));
    

    看见 middleware

    推荐文章