Я пытаюсь использовать инфраструктуру Apache Shiro для защиты своего веб-приложения (пользовательский интерфейс основан на Vaadin 6). Просмотрел все примеры на сайте Shiro, а также работал в Интернете в течение нескольких часов, но я не могу найти чистый способ справиться со следующими требованиями.
Предполагая, что приложение является своего рода инструментом управления проектами, где пользователи создают действия, которые принадлежат определенным отделам иерархии компаний. Каждый пользователь может работать в нескольких отделах и имеет разные роли безопасности в каждом отделе. Пример:
Department A - User is 'Manager' here Department B Department C - User is 'Admin' here Department D
Пользователь - "Менеджер" в отделе A Пользователь - "Администратор" в отделе C Пользователь также должен наследовать роль "Admin" для отдела D (который является предком Департамента C).
Итак, проверка основного разрешения (при условии, что я хочу просмотреть активность, принадлежащую некоторому отделу):
- Проверить, имеет ли пользователь активности активность просмотр, принадлежит ли пользователь отдела, имеет роль в;
- Убедитесь, что пользователь получил разрешение, основанное на его роли в этом отделе.
Я в настоящее время застрял в понимании того, как реализовать не только просто "роль системы", но и "роль в этом конкретном отделе".
Как я могу преобразовать вышеприведенный пример в строку разрешений типа "activity: view: 123"? И как я могу проверить разрешение в своей бизнес-логике?
Еще одно сомнение заключается в реализации с Сиро, я хотел бы использовать какое-то готовое решение, приложит минимальные усилия для предоставления моих собственных реализаций. Тем не менее, похоже, что встроенные реализации Shiro предназначены только для простых случаев. Есть ли какой-нибудь пример реализации комплексной авторизации (который может охватывать вышеприведенный случай)?