Как стать автором
Обновить

Комментарии 4

Джек имеет права на дом, а значит и на темный чулан, а стало быть и на пшеницу, которая там хранится

Это утверждение истинно только в логике первого порядка (исчислении предикатов первого порядка). Я думаю, вот бы обрадовались банки и иже с ними, если бы это высказывание применялось на практике. А на практике надо разобраться, чья пшеница и на каком основании хранится в чулане.

Порядок логики не имеет отношения к владению

Мой опыт показывает, что многоуровневое наследование прав это штука довольно редкая и, в реальных бизнес-задачах очень часто является выстрелом себе в ногу.
Поэтому только права к конкретному ресурсу, их и в токен можно запихать прекрасно, и проверять с линейной сложностью, ну и всё такое.

Опять-таки, из вашего примера: в соответствие с законодательством я могу иметь права на дом, но если я сдал в нём квартиру, то я не имею права в неё заходить.

Обычно в нормальных системах права "расширяются" вглубь.
Например, если человек имеет доступ к морде админки, то это совсем не обязательно, что он может редактировать контент, для этого ему нужно еще одно право.

В итоге, у него будет пачка прав из серии: 'admin_access', 'content_edit' и.т.п.
Эту пачку прав можно зашифровать в тот же токен и прекрасно проверять при доступе к ресурсу.

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

Но тут возникает интересное - где должна храниться связка роль-права и что шифровать в токене? В принципе, можно при создании токена выгружать туда все права.

Ну и да, это всё RBAC.

Вы правы, эту штука довольно редкая.

Но потребность в ней возникла у меня в пет-проекте, примерно описанном в статье: распределенный таск-менеджер, с большой глубиной иерархии и множественным наследованием. И вот RBAC с трудом получается применить.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории