[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ACL хранить или перезапрашивать
Страницы: 1, 2
McLotos
Ну собственно тут важно понимать что запрашивание из БД при любом переходе по ссылке это грузит базу (при большом количестве посетителей и большом списке правил).
Хранение в сессии не дает нам возможность менять права пользователей "на лету", но снижает количество запросов к БД.
А вот отслеживание только критических страниц и запрос прав именно на них, лично мне кажется оптимальным вариантом.
Пожалуйста при указании ответа, аргументируйте, хочется понять почему именно так. ph34r.gif

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
Хранить в кэше, поскольку набор правил одинаков для всех, то нет необходимости держать его в сессии каждого посетителя.
bestxp
Ничего из выше перечисленного)

Что за права, и какие именно права, пользователя конкретного или у него группы с иерархией?

Что тебе мешает "скомпилировать права" закешировать на диске и обновлять их при обновлении в бд ( там у тебя красиво сложено, а на диске удобно пользоваться и менять можно на лету )

помимо всего 1 запрос к бд на получение списка прав никак не отразиться даже на хайлоад проекте, у тебя больше запросов на получение данных
McLotos
Цитата (kaww @ 12.02.2015 - 13:29)
поскольку набор правил одинаков для всех,

Далеко не всегда так.
Цитата (bestxp @ 12.02.2015 - 13:29)
помимо всего 1 запрос к бд на получение списка прав никак не отразиться даже на хайлоад проекте, у тебя больше запросов на получение данных

1. Запрос к таблице на получение группы пользователя и его личного ACL
2. Запрос к таблице на получение ACL группы пользователя
А запросы на получение данных можно минимизировать за счет предварительной генерации готовых html (на страницах, на которых контент не меняется, например О компании и Контакты)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
Цитата (McLotos @ 12.02.2015 - 07:35)
Далеко не всегда так.

Всегда так по определению. ACL - список контроля доступа, который определяет, кто или что может получать доступ к конкретному объекту, и какие именно операции разрешено или запрещено этому субъекту проводить над объектом. via Wikipedia
McLotos
Цитата (kaww @ 12.02.2015 - 13:42)
список контроля доступа, который определяет, кто или что может получать доступ к конкретному объекту

TRUE
Но ты забываешь что у любого пользователя могут существовать персональные правила, которые либо ограничивают что-то что разрешено его группе, либо наоборот разрешают что-то что не разрешено его группе.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
Цитата (McLotos @ 12.02.2015 - 07:45)
Но ты забываешь что у любого пользователя могут существовать персональные правила

Ничего я не забыл. То, что ты назвал персональными правилами, - это как раз и есть тот самый список контроля доступа, который один для всех и никак иначе.
McLotos
Цитата (kaww @ 12.02.2015 - 13:54)
который один для всех и никак иначе

Как это один на всех?
Вот смотри, есть группа GoodsManagers (группа управления товарами)
У группы есть старший менеджер, который имеет право не только создавать товары, но и создавать формы анкет для товаров. По логике у этого пользователя права должны отличаться от прав всей группы. И как ты по твоему собираешься это реализовывать. Будешь делать для него отдельную группу?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
kaww
McLotos. Ты не опроверг утверждение, что список не может быть один для всех . Но, судя по всему, в твоей конкретной реализации он хранится для каждого пользователя по отдельности, что подтверждается комментарием
Цитата (McLotos @ 12.02.2015 - 07:35)
1. Запрос к таблице на получение группы пользователя и его личного ACL
2. Запрос к таблице на получение ACL группы пользователя

McLotos
Цитата (kaww @ 12.02.2015 - 14:19)
в твоей конкретной реализации он хранится для каждого пользователя по отдельности

А бывает по-другому? В таблице с пользователями (где хранится вся информация о пользователе) указывается группа к которой принадлежит пользователь.
По id группы пользователя вытягиваются правила группы.
Если у пользователя заполнено дополнительное поле с указанием личных правил, то и эти правила тоже подключаются к правам пользователя.
Есть какая-то более адекватная реализация?
Да и вообще диалог ушел не в ту сторону. Суть опроса вообще не в этом.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
bestxp
Цитата
Как это один на всех?
Вот смотри, есть группа GoodsManagers (группа управления товарами)
У группы есть старший менеджер, который имеет право не только создавать товары, но и создавать формы анкет для товаров. По логике у этого пользователя права должны отличаться от прав всей группы. И как ты по твоему собираешься это реализовывать. Будешь делать для него отдельную группу?


Легко отдельная роль/группа для старшего которая наследуется от предыдущей

Цитата
Да и вообще диалог ушел не в ту сторону. Суть опроса вообще не в этом.


и да суть диалога найти лучшее решение wink.gif не забывай где ты находишься)))
McLotos
Цитата (bestxp @ 12.02.2015 - 14:36)
Легко отдельная роль/группа для старшего которая наследуется от предыдущей

Угу. и давай теперь для каждого пользователя у которого хоть чуть-чуть отличаются права на (страницу/раздел) (читать/создавать/удалять) будем создавать отдельную группу. Тогда и получится
Цитата (kaww @ 12.02.2015 - 14:19)
он хранится для каждого пользователя по отдельности,



_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
stump
Подумал по использование всех пунктов для разных случаев разный способ хранения. Замиксовать варианты.

Что если так сделать?

_____________
Трус не играет в хокей
GET
Цитата

Опрос: Что лучше. Хранить ACL в сессии или перезапрашивать с Базы при каждом действии


Как быть если нужно вытаскивать скажем число личных сообщений, комментариев и т.д? Почти все современные ресурсы работают с этим включая этот форум. Запрос к БД/файлам все равно придется делать. Или что делать когда юзер забанен? Блин, может я вообще неправильно понимаю о чем речь идет. smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
twin
База данных, это тоже файлы. Ровно как и сессия. По сути большой разницы нет, хотя многих пугает то, что СУБД, это сервер. Однако сколько там будет пользователей? Ну тысяча, ну десять тысяч даже. Это такой пшик, что не стоит греть голову. Разница практически не заметна.

Конечно, можно закэшировать, мемкэшем тем же. Однако и он тоже сервер, шило на мыло. В данном случае экономить на удобстве и функциональности нет никакого смысла.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.