Здравствуйте. При входе в систему под определённым пользователем(например user) почему-то выполняются запросы для других пользователей.
Достаточно было этого:
SELECT * FROM "auth_item" WHERE "name"='user'
SELECT "parent" FROM "auth_item_child" WHERE "child"='user'
А получаю сверху ещё вот такие запросы:
SELECT * FROM "auth_item" WHERE "name"='admin'
SELECT "parent" FROM "auth_item_child" WHERE "child"='admin'
SELECT * FROM "auth_item" WHERE "name"='manager'
SELECT "parent" FROM "auth_item_child" WHERE "child"='manager'
Да, эти страницы могу просматривать так же admin и manager, но почему проходят запросы к ним когда я авторизирован под user. Пока это не критично, но с добавлением пользователей и Ролей растёт количество запросов к базе и вместо 10 может быть под 40. Сталкивался ли кто-нибудь с такой проблемой?
mdmsoft-yii2-admin. Много запросов.
-
- Сообщения: 3
- Зарегистрирован: 2019.12.06, 11:22
Re: mdmsoft-yii2-admin. Много запросов.
Так задумано.
Если у вас есть вложенные роли, то при поиске будет все время так перебирать всех родителей, пока не совпадет с текущим пользователем или не покажет что он не имеет данных прав.
Если у вас есть вложенные роли, то при поиске будет все время так перебирать всех родителей, пока не совпадет с текущим пользователем или не покажет что он не имеет данных прав.
-
- Сообщения: 3
- Зарегистрирован: 2019.12.06, 11:22
Re: mdmsoft-yii2-admin. Много запросов.
Эти Роли у меня не вложенные. Я создал 3 различные роли: admin, manager, user. Они не являются вложенными. Просто все 3 роли имеют доступ например к site/index. И когда захожу туда, то почему-то sql запросы идут по всем ролям, если я зарегистрирован под user. Когда же я зарегистрирован по admin, то такого нет(не могу даже понять почему так, под одним пользователем 10 запросов, под другим 16).
Re: mdmsoft-yii2-admin. Много запросов.
Вся соль в логике работы checkAccessRecursive.reactive94 писал(а): ↑2019.12.06, 16:39 Эти Роли у меня не вложенные. Я создал 3 различные роли: admin, manager, user. Они не являются вложенными. Просто все 3 роли имеют доступ например к site/index. И когда захожу туда, то почему-то sql запросы идут по всем ролям, если я зарегистрирован под user. Когда же я зарегистрирован по admin, то такого нет(не могу даже понять почему так, под одним пользователем 10 запросов, под другим 16).
Раз ваше разрешение принадлежит всем трем ролям, все их три и будет перебирать, пока не найдет.
Роль user у вас видимо позже добавлена, поэтому перед ней проверит(неуспешно) еще те другие роли.
А по admin сразу попадание.
-
- Сообщения: 3
- Зарегистрирован: 2019.12.06, 11:22
Re: mdmsoft-yii2-admin. Много запросов.
Спасибо большое за разъяснение. Для полноты картины, есть ли у вас ссылки на материал, или можете написать как тогда правильнее создавать роли, разрешения и пользователей?
maleks писал(а): ↑2019.12.07, 08:52 Вся соль в логике работы checkAccessRecursive.
Раз ваше разрешение принадлежит всем трем ролям, все их три и будет перебирать, пока не найдет.
Роль user у вас видимо позже добавлена, поэтому перед ней проверит(неуспешно) еще те другие роли.
А по admin сразу попадание.
Re: mdmsoft-yii2-admin. Много запросов.
Все и так правильно, не считайте копейки/запросики.
Если поднапрячься то вроде можно кешированием оптимизировать, гуглите.
Если поднапрячься то вроде можно кешированием оптимизировать, гуглите.