Вопрос по архитектуре приложения. Проверка прав доступа.
Есть веб-приложение. Много юзверей, много разных видов объектов. Нужно проверять право юзверя совершать те или иные действия над объектом.
В общем-то такой сущности как "роли" по большому счету нет кроме роли "администратор" у которого есть права на все. Обычно юзверь имеет права доступа к "своим" объектам, а кроме того есть конкретные списки или правила, по которым есть права доступа к чужим объектам. Потому RBAC тулить вроде бы не очень обоснованно.
Вопрос состоит в том, в каком месте приложения лучше втулить код, который фактически проверяет право доступа. Вижу такие варианты.
1. В класс user:
user.has_permission(object, op_name);
2. В класс-контроллер объекта с которым производится действие:
object.has_permission(user, op_name);
3. Создать отдельный класс проверяющий права доступа, глобальный инстанс которого инициализируется по необходимости.
perm_controller.check_permission(object, user, op_name);
Вопрос к тем кто сталкивается с разработкой архитектуры приложений - как лучше?
В общем-то такой сущности как "роли" по большому счету нет кроме роли "администратор" у которого есть права на все. Обычно юзверь имеет права доступа к "своим" объектам, а кроме того есть конкретные списки или правила, по которым есть права доступа к чужим объектам. Потому RBAC тулить вроде бы не очень обоснованно.
Вопрос состоит в том, в каком месте приложения лучше втулить код, который фактически проверяет право доступа. Вижу такие варианты.
1. В класс user:
user.has_permission(object, op_name);
2. В класс-контроллер объекта с которым производится действие:
object.has_permission(user, op_name);
3. Создать отдельный класс проверяющий права доступа, глобальный инстанс которого инициализируется по необходимости.
perm_controller.check_permission(object, user, op_name);
Вопрос к тем кто сталкивается с разработкой архитектуры приложений - как лучше?