2009-04-26 4 views
1

i модернизировал мой grails 1.0.4 + acegi 0.4.1 проект для grails 1.1 с acegi 0.5.1.Grails Acegi Plugin springsecurity.GrailsDaoImpl - Пользователь [admin] не имеет GrantedAuthority

Я могу запустить приложение без ошибок, но когда я хочу войти, я получаю сообщение «неправильное имя пользователя или пароль». Выход Grails-оболочка:

2009-04-26 12: 38: 46997 [403984690 @ qtp0-0] ERROR springsecurity.GrailsDaoImpl - Пользователь
[админ] не имеет GrantedAuthority

Может быть, кто-то знает, почему я не могу войти? Пользователь «admin» создается в Bootstrap.

Надеюсь, вы можете мне помочь! Спасибо от germany, whitenexx

ответ

0

Я нашел мою проблему. Мне пришлось самостоятельно редактировать/кодировать метод passwordEncoder() или encodePassword() (с моим алгоритмом и т. Д.). passwordEncoder() устарел, используйте encodePassword()!

1

Я столкнулся с той же проблемой. Убедитесь, что при создании пользователя в BootStrap.groovy вы сначала создаете пользователя с паролем и всеми полями, даже если они являются необязательными (не знаете почему). Затем создайте новую роль, а затем добавьте человека в роль.

Один из способов проверить, назначен ли пользователь роли, - посмотреть таблицу role_people, которая сопоставляет пользователей с ролями.

Это мой BootStrap.groovy файл:

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().

Смежные вопросы