Получить список пользователей, у которых есть определенные или набор разрешений

#shiro #jdbcrealm

#shiro #jdbcrealm

Вопрос:

Использование Shiro с JDBCRealm

Мой вариант использования требует, чтобы пользователь отправил форму следующему пользователю. Следующим пользователем может быть только тот, у кого есть определенные разрешения. Это должно быть известно, чтобы показывать только допустимый следующий список пользователей для выбора.

Как я могу получить список всех пользователей, у которых есть определенные разрешения? Если нет, есть ли обходной путь для получения строк разрешений пользователя из базы данных, а затем, по крайней мере, повторно использовать логику Shiro, чтобы проверить, есть ли у пользователя определенные разрешения?

Ответ №1:

Shiro относится только к безопасности, полномочиям и т. Д. Текущего пользователя, А не ко всей базе пользователей. Вы можете использовать свои стандартные sql-запросы для получения пользователей с теми же разрешениями, что и у текущего зарегистрированного субъекта.

Почему бы не использовать простой SQL-запрос, который сопоставляет текущие разрешения пользователя с разрешениями других пользователей и выдает список. Таким образом, вы сэкономите память и ресурсы, не вычисляя логику разрешений в Java снова.

Комментарии:

1. Думал об этом. Пример: если я ищу пользователей с разрешением a.b.c, то мне также нужно выбрать пользователей с a.* и a.*.c. Не могу придумать запрос, который это делает. Другой способ, о котором я могу думать, — это получить список всех разрешений, затем перебирать их и переопределять логику shiro, чтобы узнать, разрешена ли строка разрешений (a.b.c) при заданном разрешении (a.*) или (a.*.c). Хотел узнать, есть ли более эффективный способ?

2. как насчет запроса с (разрешением, подобным a:%) или (разрешением, подобным a:%: c), подобным этим.