2016-11-06 3 views
2

У меня есть API Node.js, в котором я хочу добавить документацию swagger. Клиенты авторизовать через JWT, поэтому я добавил это к безопасности:.Специальная защита Swagger для пути

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

Чем я могу добавить к этому разными путями, чтобы сказать клиенту, чтобы сделать это, вы должны быть зарегистрированы в

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

Но как добавить дополнительные ограничения безопасности? Например, пользователь может редактировать профиль только в том случае, если он зарегистрирован как этот пользователь. Или пользователь может редактировать комментарий, если у него есть статус superadmin. Или, если он является администратором для доски, комментарий отправляется в OR, регистрируется как пользователь, создавший этот комментарий.

+0

Связанные (или дублировать): [Как определить безопасность роли/разрешения в Swagger] (https://stackoverflow.com/q/40162062/113116) – Helen

ответ

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); 
} 
+0

работает отлично, как это, спасибо. В случае особых требований безопасности я попытался лучше определить свои области. Если это невозможно, я добавил эти требования в ответ 401 как описание. – Jodo

+0

Да, довольно сложно выполнить конкретные требования в файле определения swagger –

Смежные вопросы