当前位置: 首页 > 面试题库 >

Node.js + Express.js用户权限安全模型

颜永怡
2023-03-14
问题内容

我们有一个具有两种类型用户的应用程序。根据用户的登录方式,我们希望他们可以访问应用程序的不同部分。

我们如何实现安全模型以防止用户看到他们无权访问的内容?

我们是否将安全性纳入每个路线的实施中?问题在于我们在请求之间会有一些重复的逻辑。我们可以将其移到辅助函数中,但是仍然需要记住调用它。

我们是否将安全性作为全局app.all()路由处理程序的一部分?问题是我们必须检查每条路线,并根据众多规则执行不同的逻辑。至少所有代码都放在一个地方,但是……所有代码都放在一个地方。


问题答案:

每条路线都可以正常使用。这通常是我要做的:

function requireRole (role) {
    return function (req, res, next) {
        if (req.session.user && req.session.user.role === role) {
            next();
        } else {
            res.send(403);
        }
    }
}

app.get("/foo", foo.index);
app.get("/foo/:id", requireRole("user"), foo.show);
app.post("/foo", requireRole("admin"), foo.create);

// All bars are protected
app.all("/foo/bar", requireRole("admin"));

// All paths starting with "/foo/bar/" are protected
app.all("/foo/bar/*", requireRole("user"));


 类似资料:
  • 这是关于V.4(MVC+安全性)的。我实现了,其中在方法中向用户授予其权限。让我们简单地说: 还有一个安全控制器,其中有一个带有注释的带注释的方法: 正如您在方法中看到的,我显式地将角色授予了用户。但是,当我尝试访问时,我得到一个异常: 2016-04-19 10:25:16,899 DEBUG(http-nio-8080-exec-9)[org.springframework.security.

  • 在创建服务器实例之前,你需要在该实例上添加安全组规则,这样服务器实例的用户才能ping这个主机或者通过SSH连接这个实例。安全组是IP过滤的规则组,它决定了网络的连通性,适用于一个Project内的所有实例。配置安全组有两种方式:要么是在默认的安全组中添加规则,要么新建一个安全组,然后把规则写在新的安全组里。 密钥对是SSH的证书,在实例启动时被注入进系统里。如欲使用密钥对注入,镜像中的系统上必须

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/getUserPermissionsList 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/getUserPermissions 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 无

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/user/v1.0.0/

  • 接口说明 获取用户权限 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/user/v1.0.0/