Swagger特定的路径安全性

时间:2016-11-06 08:28:32

标签: node.js api documentation swagger swagger-2.0

我有一个Node.js API,我想在其中添加swagger文档。客户通过JWT授权,因此我将其添加到安全性中:

securityDefinitions:
  UserSecurity:
    type: apiKey
    description: User is logged in
    in: header
    name: Authorization

我可以将其添加到不同的路径告诉客户端,要执行此操作,您需要登录。

/user/{userId}
  get:
    security:
      - UserSecurity: []

但是,如何添加更具体的安全约束?例如,如果以该用户身份登录,则用户只能编辑该配置文件。或者用户可以编辑评论,如果他有superadmin状态,或者如果他是电路板的管理员,评论发布在OR,则记录为创建此评论的用户。

1 个答案:

答案 0 :(得分:1)

AFAIK,没有直接的方法可以添加'角色'招摇文件。

我做了什么,是因为我在自选文件x-scope中添加了自定义部分:

get:
    operationId: getToken
    x-scope:
      - merchant
    security:
      - token: []

然后在代码中,我检查用户对路径中提供的角色的作用:

authorize: (req, def, token, callback) => {
  let scopes = req.swagger.operation["x-scope"];
  //scopes will contain ["merchant"] array

  return verifyUserAndRoles(token, scopes);
}