весенняя безопасность - одна активная роль - PullRequest
1 голос
/ 02 мая 2011

Представьте, что пользователи могут иметь одну или несколько ролей в системе. после Войти пользователь должен выбрать одну из этих ролей. только в этот момент эта выбранная роль должна быть проверена весной безопасности.

например. у пользователя есть ROLE_A, ROLE_B

requestmaps:

/ книга / ** -> ROLE_A, ROLE_B / автор / ** -> РОЛЬ А

нормальное поведение: пользователь может получить доступ ко всем определенным действия. в моем особом случае пользователь выберет ROLE_A и затем получит доступ только для действий / author / **. другими словами, возможно определить одну активную роль в контексте безопасности, так что весна security будет выполнять проверки безопасности на основе этой единственной роли?

1 Ответ

2 голосов
/ 02 мая 2011

Хотя я бы предложил избегать такого подхода, с точки зрения конечного пользователя, я понимаю, что иногда существуют требования вне вашего контроля.Таким образом, обратите внимание, что объект Person, который вы определили для использования в Spring Security, должен содержать следующее:

Set<Role> getAuthorities() {
   PersonRole.findAllByPerson(this).collect { it.role } as Set
}

Если вы определите свойство где-то, в котором указана выбранная вами роль, просто измените вышеуказанный методтолько вернуть эту роль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...