我有一个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,则记录为创建此评论的用户。
答案 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);
}