Как я могу сохранить иерархический класс полномочий в классе лиц?
Мой вопрос: (Как?) я могу сохранить свои "права" для моего пользователя в классе пользователя в Grails с помощью Spring Security Plugin?
Я дал следующую структуру SQL:
Таблица пользователей:
...
varchar(255): username
...
int(2) rank: (refers to Rank table)
Таблица рейтинга:
int(11): id
varchar(25): rank_name
Могу ли я настроить свои доменные классы для работы с этой структурой вместо типичной схемы "пользователь, администрация, пользователь и администратор, многие ко многим"?
Ранг (id) является иерархическим, то есть пользователь с рангом 4 получил все "полномочия" от пользователя с рангом 3 и т. Д.
РЕДАКТИРОВАТЬ: я просто заменил в пользовательском домене, метод getAuthorities следующим:
Set<Permission> getAuthorities() {
Authority.findAllById(this.rank)
// instead of: UserAuthority.findAllByUser(this)*.permission
}
1 ответ
Посмотрите на GormUserDetailsService, чтобы увидеть, как загружаются авторы. Там есть authoritiesPropertyName
конфигурация для ядра Springsecurity, которая задает имя свойства домена пользователя, который должен возвращать права доступа, значение по умолчанию - "полномочия" - вы можете изменить это, чтобы вернуть права доступа на основе модели вашего домена.
Если это не удовлетворяет вашим требованиям, то вы также можете создать службу пользовательских данных.
И переопределить исходный сервис данных пользователя, определив бин с именем userDetailsService
в вашем conf/spring/resources.groovy