Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 28.10.2003 12:30
начну с конца:Мне очень понравилась идея провести аналогию с NDS.да, несомненно, однако и сама NDS обслуживается поднятым и постоянно работающим сервером, мне-же приходится заниматься подобными вычислениями в каждом CGI процессе. это несколько разные вещи, и мне приходится чем-то жертвовать. я пожертвовал размещением пользователей/групп (они вне дерева), т.к. далеко не всегда мне они вообще требуются :)
Бросаются в глаза отличие.
В NDS пользователи и группы тоже являются объектами.
И на них можно давать права!
Тогда, для определения доступов к объекту child2 мы вытаскиваем доступы к объекту child1 (и всем его потомкам, не так ли), что нам совершенно не нужно.в принципе у меня есть такое понятие у объекта как nesting, т.е. я могу достать не весь тред, а ограничить его снизу/сверху. но я все равно не делаю этого. почему?
Получается, что нужно писать весьма сложный код для создания параметра thread перед вызовом метода @getRightsToObject[object;thread;acl;is_owner].нет, не получается. код почти всегда одинаков. примерно такой как я привел. в моем случае он еще упрощается, т.к. в engine я все равно достаю текущий тред.
Мне представляется, что проще в классе auth определить виртуальный метод getObject[object_id]...если делать совсем красиво, то надо скармливать этому методу объект другого класса (например object) у которого есть все эти методы.
Поле acl тоже не нужно, его можно получить по объекту.тут опять не согласен (нету демона у нас), поэтому я достаю для заданного пользователя его полный ACL на все объекты, и больше не возвращаюсь к SQL запросам. именно поэтому тут приносится в жертву атомарность операций.