0

나의 질문은 : (어떻게?) Spring Security Plugin을 가진 Grails의 사용자 클래스에 내 사용자를위한 "권한"을 저장할 수 있습니까?Person 클래스에 계층 적 Authority 클래스를 저장하려면 어떻게해야합니까?

나는 다음과 같은 SQL 구조를 부여했습니다

사용자 테이블 :

... 
varchar(255): username 
... 
int(2) rank: (refers to Rank table) 

순위 테이블 :

int(11): id 
varchar(25): rank_name 

내가 대신 그 구조와 함께 작동하도록, 내 도메인 클래스를 구성 할 수 일반적인 "User, Authority, UserAuthority many to many"스키마 단순히 사용자 도메인에 교체의 getAuthorities :

순위 (ID)는 등

EDIT 순위 3 사용자의 모든 "권위"를 가지고 4 계급을 가진 사용자를 의미, 계층 적이다 방법은 다음과 같습니다.

Set<Permission> getAuthorities() { 
    Authority.findAllById(this.rank) 
    // instead of: UserAuthority.findAllByUser(this)*.permission 
} 

답변

0

authorites가로드되는 방법을 보려면 GormUserDetailsService을 확인하십시오. springsecurity core에 대해 authoritiesPropertyName 설정이 있습니다.이 설정은 권한을 반환해야하는 사용자 도메인의 속성 이름을 지정합니다. 기본값은 'authorities'입니다.이 설정을 수정하여 도메인 모델을 기반으로 권한을 반환 할 수 있습니다.

사용자 요구 사항을 충족시키지 못하면 맞춤형 사용자 세부 정보 서비스를 만들 수 있습니다.

conf/spring/resources.groovy

에 이름이 userDetailsService 인 bean을 정의하여 원래 사용자 세부 사항 서비스를 대체하십시오.