Node Acl | Авторизация для Dynami c URL - PullRequest
0 голосов
/ 26 мая 2020

Я использую node acl для авторизации моих конечных точек отдыха в моем приложении node.

Авторизация на основе ролей отлично работает для следующих URL-адресов.

acl.allow([{
    roles: ['user'],
    allows: [{
            resources: ['/books/v1/single'],
            permissions: ['post'],
        },
       {
            resources: ['/books/v1/book/list'],
            permissions: ['get'],
        },
    ]
},
{
    roles: ['admin'],
    allows: [{
            resources: ['/books/v1/list'],
            permissions: ['get'],
        }
    ]
}]);

Но когда Я пытаюсь добавить URL-адреса Dynami c, он не работает должным образом и выдает ошибку, которая означает, что UnAuthorized Требуется больше разрешений. т.е. / users / v1 /: userId или / books / v1 / user /: userID / book /: bookID

1 Ответ

0 голосов
/ 25 июня 2020

Это потому, что узел acl фактически не поддерживает иерархию. На самом деле это простой список, поэтому он явно проверяет соответствие строки ресурсу. Это просто фундаментальная проблема с пакетом. Поскольку все функциональные возможности содержатся в промежуточном программном обеспечении, и оно просто не расширяемо, нет возможности делать то, что вы хотите с этим пакетом, не внося изменения, чтобы он принимал настраиваемый обработчик, чтобы решить, что передать проверке промежуточного программного обеспечения.

Вот пример соответствующей открытой проблемы от 2017-08. Отсутствие функциональности здесь именно поэтому существуют такие решения, как PolicyServer и Authress , которые действительно обрабатывают промежуточное ПО с подстановочными знаками и динамические c иерархии ресурсов.

...