Плагин Grails Acegi springsecurity.GrailsDaoImpl - У пользователя [admin] нет предоставленного разрешения - PullRequest
1 голос
/ 26 апреля 2009

я обновил свой проект grails 1.0.4 + acegi 0.4.1 до версии grails 1.1 с acegi 0.5.1.

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

2009-04-26 12: 38: 46,997 [403984690 @ qtp0-0] ОШИБКА springsecurity.GrailsDaoImpl - Пользователь
[admin] не имеет предоставленного разрешения

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

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

Ответы [ 3 ]

1 голос
/ 30 апреля 2009

Я столкнулся с точно такой же проблемой. Убедитесь, что при создании пользователя в 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 голосов
/ 23 февраля 2011

Я использовал acegi и у меня была похожая проблема. Если вы используете кодировку по умолчанию для acegi, позвоните passwordEncoder(). В противном случае вам следует позвонить encodePassword().

0 голосов
/ 04 мая 2009

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

...