#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), подобным этим.