2017-05-10 3 views
0

나는 spring-security-core plugin 3.1과 함께 grails 3.2.9를 사용하고있다.grails 3 스프링 보안 사용자 도메인 id 필드 합성

s2-quickstart 스크립트를 실행하여 User, Role 및 UserRole 도메인 클래스를 생성했습니다. 사용자 및 역할 도메인의 id 필드가 합성으로 간주됩니다. 여기

def u = User.class.declaredFields.findAll {!it.synthetic} 
u.each { 
    println it 
} 

내 사용자 클래스 : 나는 다음과 같은 코드를 실행하는 경우 예를 들어, ID 필드는 표시되지 않습니다

@GrailsCompileStatic 
@EqualsAndHashCode(includes='username') 
@ToString(includes='username', includeNames=true, includePackage=false) 
class User extends BaseDomain implements Serializable { 

    private static final long serialVersionUID = 1 

    String username 
    String password 
    boolean enabled = true 
    boolean accountExpired 
    boolean accountLocked 
    boolean passwordExpired 
    Date lastLogin 

    Set<Role> getAuthorities() { 
     (UserRole.findAllByUser(this) as List<UserRole>)*.role as Set<Role> 
    } 

    static constraints = { 
     password blank: false, password: true 
     username blank: false, unique: true 
    } 

    static mapping = { 
     id generator: 'identity', column: 'user_id', sqlType: 'bigint(20) unsigned' 
     password column: '`password`' 
     lastLogin sqlType: 'timestamp' 
    } 
} 

이 내 다른 도메인 클래스와 발생되지 않으며, 이 문제를 일으키는 첫 번째 문제는 exa-datatables 플러그인 (2.0.1)입니다. 플러그인은 도메인의 필드를 찾기 위해 유사한 코드를 사용하므로 플러그인에서 표시 할 id 필드를 요청할 때 알 수없는 열 오류로 실패합니다.

답변

0

클래스 (BaseDomain 예제)를 확장했기 때문에이 문제가 발생했는데 BaseDomain을 추상으로 표시하지 않았습니다. BaseDomain을 추상적으로 인증하자마자 모든 것이 예상대로 작동하기 시작했습니다.

abstract class BaseDomain {...