В моем приложении у меня есть объект верхнего уровня, называемый Organization. Отношения между пользователем и организацией - это многие ко многим.Роли пользователей безопасности безопасности в организации
Из-за этого я мог бы иметь следующий сценарий:
- UserA имеет роль ROLE_ADMIN для OrganizationA
- UserA имеет роль ROLE_USER для OrganizationB
Мне нужно, чтобы гарантировать, что когда UserA доступ к ресурсам для OrganizationB он не делает это как ADMIN. Поэтому мне нужна дополнительная проверка того, что пользователь имеет правильные роли на уровне организации. Есть ли что-то встроенное в Spring Security, которое позволяет это? Если нет, то кто-нибудь знает, как лучше всего это решить?
UPDATE: Немного больше информации ...
пользователь входит в систему и выбирает, какие орг они хотят работать. Это сохраняется в сеансе. Кроме того, URL-адреса заблокированы с помощью аннотации Secured. Это означает, что если UserA должен был войти в систему и выбрать OrgA, они должны иметь доступ к/admin/user/create, однако, если они войдут в систему и выберите OrgB, у них не будет доступа к этому URL.
Долгий путь - добавить дополнительные проверки в каждый метод, когда это имеет значение. Поэтому вызовите некоторый метод обслуживания, в котором говорится: «Хорошо, вы администратор для OrgA, но не для OrgB, и вы вошли в систему с помощью OrgB, поэтому отклоните этот запрос».
Я надеюсь на более эффективный способ обработки грааля/пружины.
Возможно, вам понадобится дополнительная информация, иначе сложно предложить конкретный подход. Какие различия между ресурсами для разных организаций, например? –
Как администратор или организация, я могу создавать пользователей. Я не хочу разрешать это для UserA в OrganizationB. Такого рода вещи. – Gregg
Хорошо, я должен был сказать: «Как ваше приложение различает разные ресурсы?» Что такое «ресурс» в этом контексте? Например, используете ли вы разные URL-адреса для разных организаций? –