Я довольно новичок в Grails, так что, возможно, я далеко от базы, но я подозреваю, что ваша проблема, возможно, связана с тем, как вы кодируете пароль при создании пользователя.Делаете ли вы то же самое, когда создаете пользователей, используя «клиентскую часть», по сравнению с тем, какой другой метод вы используете?
Например, когда я впервые начал использовать плагин spring-security-ui, я создал пользователейс утилитой, которая входит в комплект, и все они не смогли войти в систему. Если я правильно понимаю, ядро spring-security было обновлено начиная с spring-security-ui, что переместило необходимость кодировать пароль в контроллерах в пределах Userсам.Например, в Spring-security-ui UserController.save (), который поставляется с этим плагином, это происходит:
if (params.password) {
String salt = saltSource instanceof NullSaltSource ? null : params.username
user.password = springSecurityService.encodePassword(params.password, salt)
}
Но мой класс User имеет это (прямо из примеров плагинов s2)
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
Поскольку мой класс User управляет самим кодированием, произошла двойная кодировка, которая вызывала сбой при входе в систему, которые были созданы с ним.Может ли что-то подобное происходить в вашем приложении?Когда вы создаете пользователей не на стороне клиента, вы кодируете таким же образом?