Прошу совета по не очень конкретной ситуации.
Сейчас у меня около 20000 магазинов. Во всех магазинах есть администраторы, менеджеры и роли пользователей.
Любой персонаж может быть назначен 1 или нескольким магазинам и может иметь 1 или несколько ролей для этого конкретного магазина. То есть:
Сначала я преобразовал свои магазины в группы. Но так как роли привязаны к группе, у меня все равно было бы 3 роли для каждой группы (20000 групп и 60000 ролей - Group StoreA, Роли: StoreA_Admin, StoreA_Manager, StoreA_User и т.д...). Не уверен, что это правильное решение, И я не уверен в производительности.
Затем я сохранил хранилища как группы, но вместо создания ролей я создал настраиваемые многозначные атрибуты, которые сохраняют uid группы. Это работало в углероде, а также в API, но консоль не любит многозначные поля. И если будет введена другая роль, мне придется создать еще одно поле.
Любая мысль о том, как подойти к этой ситуации?
Привет @AnuradhaKarunarathna, я использую IS 6.0.0 с 1 хранилищем пользователей.
Мы можем сопоставить вашу историю с группами и ролями ИС следующим образом.
Обратите внимание, что начиная с версии IS-5.11.0 группы и роли рассматриваются как два отдельных ресурса.
Ссылаться на:
Это разделение не четко видно в консоли управления. Таким образом, вы можете использовать консольное приложение для создания групп и ролей.
Благодаря этому утверждению:
Пользователь может войти в систему и получить доступ к пользовательским функциям.
Нам не нужно специально назначать какую-либо роль обычным бизнес-пользователям. Никакая конкретная роль не требуется для входа в бизнес-приложение через базовую аутентификацию сервера идентификации. Если ваше бизнес-приложение имеет управление доступом на основе ролей, необходимо также назначить роль бизнес-пользователям. В противном случае каждый пользователь получит права входа в систему после успешной аутентификации, этого должно быть достаточно для выполнения бизнес-операций в приложении.
В вашем случае, если администратор любого магазина имеет одинаковый набор разрешений и любой менеджер имеет одинаковый набор разрешений, вы не можете просто оценить разрешения и авторизовать запросы. Например: если пользователь B является менеджером магазина A и администратором магазина B, он унаследовал разрешения, связанные с ролями администратора и менеджера. Но пользователь B выполняет запрос в хранилище B, вы должны авторизовать запрос только на основе ролей, связанных с хранилищем B.
Спасибо за ваш ответ @AnuradhaKarunarathna. Итак, для 20 000 магазинов мне потребуется 60 000 групп, а также 40 000 ролей? Может ли такое количество групп/ролей повлиять на производительность?
Это вопрос улучшения производительности сохраняющегося слоя. Если ваше хранилище пользователей и общая база данных правильно проиндексированы и точно настроены для получения групп пользователей и ролей, среда выполнения сервера идентификации сможет обрабатывать запросы.
@WaZz, если ваши роли менеджера и администратора в каждом магазине сопоставляются один к одному с соответствующей группой, наличие этих групп не имеет большого значения, поскольку вы можете напрямую назначать роль пользователям.
Привет, @WaZz, не могли бы вы предоставить и эту информацию? Какую версию IS вы используете? У вас есть только одно хранилище пользователей на сервере IS?