Grails Acegi Plugin Springsecurity.grailsdaoimpl - Пользователь [Admin] не имеет предоставления.
-
16-09-2019 - |
Вопрос
Я обновил свой проект 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-Пользователь
администратор] не имеет предоставленного
Может, кто -то знает, почему я не могу войти в систему? Пользователь «администратор» создается в начальной загрузке.
Я надеюсь, что вы можете помочь мне! Спасибо из Германии, WhitEnexx
Решение 2
Я нашел свою проблему. Мне пришлось отредактировать/кодировать метод PasswordEncoder () или EncodepassWord () сам (с моим алгоритмом и т. Д.). PasswordEncoder () устарел, используйте encodepassword ()!
Другие советы
Я столкнулся с той же проблемой. Проверьте, чтобы убедиться, что когда вы создаете пользователя в Bootstrap.groovy, что вы сначала создаете пользователя с паролем и всеми полями, даже если он не является обязательным (не уверен, почему). Затем создайте новую роль, а затем добавьте человека к роли.
Один из способов проверить, назначается ли пользователь для этой роли, - это посмотреть на таблицу Role_people, которая отображает пользователей на роли.
Это мой bootstrap.grovy file:
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 = {
}
}
Я использовал Acegi, и у меня была похожая проблема. Если вы используете дефолт Encode Acegi, вызовите passwordEncoder()
. Анкет В противном случае вы должны позвонить encodePassword()
.