2009-04-26 5 views
1

나는 grace 1.0.4 + acegi 0.4.1 프로젝트를 acegi 0.5.1로 grails 1.1로 업그레이드했습니다.Grails Acegi 플러그인 springsecurity.GrailsDaoImpl - 사용자 [admin]에게 GrantedAuthority가 없음

오류없이 응용 프로그램을 시작할 수 있지만 로그인하려면 "잘못된 사용자 이름 또는 암호"메시지가 표시됩니다. Grails의 쉘 출력은 다음과 같습니다

2009-04-26 12 : 38 : 46,997 오류 springsecurity.GrailsDaoImpl [403,984,690은 qtp0-0 @] - 사용자
[관리자] 더 GrantedAuthority가이 없습니다

누군가 내가 왜 로그인 할 수 없는지 압니까? 사용자 "admin"은 부트 스트랩에 생성됩니다.

나를 도울 수 있기를 바랍니다. 독일에서 감사합니다. whitenexx

답변

0

나는 내 문제를 발견했습니다

이 내 BootStrap.groovy 파일입니다. 나는 암호 알고리즘을 사용하여 passwordEncoder() 또는 encodePassword() 메서드를 직접 편집/코드화해야했습니다. passwordEncoder()가 지원되지 않습니다. encodePassword()를 사용하십시오!

1

정확히 같은 문제가 발생했습니다. BootStrap.groovy에서 사용자를 생성 할 때 비밀번호와 모든 필드로 사용자를 생성하는지 확인하십시오 (선택 이유 일지라도 확실하지 않음). 그런 다음 새 역할을 만든 다음 그 사람을 역할에 추가하십시오.

사용자가 역할에 할당되는지 확인하는 한 가지 방법은 사용자를 역할에 매핑하는 role_people 테이블을 확인하는 것입니다.

class BootStrap { 
    // include this line to encode password for ACEGI 
    def authenticateService 

    def init = { servletContext -> 
     //create admin user 
     def password = authenticateService.passwordEncoder("password") 
     def superadmin = new User(username:"admin",userRealName:"Administrator",passwd:password,enabled:true,emailShow:true,description:"admin user",email:"put email here").save() 

     //create admin role 
     def sudo = new Role(authority:"ROLE_ADMIN",description:"Site Administrator") 
     // now add the User to the role 
     sudo.addToPeople(superadmin) 
     sudo.save() 

     new Role(authority:"ROLE_USER",description:"User").save() 

    } 
    def destroy = { 
    } 
} 
+0

내 문제를 발견했습니다. 나는 암호 알고리즘을 사용하여 passwordEncoder() 또는 encodePassword() 메서드를 직접 편집/코드화해야했습니다. passwordEncoder()가 지원되지 않습니다. encodePassword()를 사용하십시오! – whitenexx

0

나는 acegi를 사용했고 비슷한 문제가있었습니다. acegi의 인코딩 기본값을 사용하는 경우 passwordEncoder()으로 전화하십시오. 그렇지 않으면 encodePassword()으로 전화해야합니다.

관련 문제