После миграции из Grails 1.3.7 в 2.0.4 Я заметил проблему с одним из моих классов домена, где я использую свойства переходного процесса для обработки паролей.Непревзойденные свойства Grails при создании объекта
Мой класс домен выглядит следующим образом (упрощенно):
package test
class User {
String email
String password1
String password2
//ShiroUser shiroUser
static constraints = {
email(email:true, nullable:false, unique:true)
password1(nullable:true,size:5..30, blank: false, validator: {password, obj ->
if(password==null && !obj.properties['id']){
return ['no.password']
}
else return true
})
password2(nullable:true, blank: false, validator: {password, obj ->
def password1 = obj.properties['password1']
if(password == null && !obj.properties['id']){
return ['no.password']
}
else{
password == password1 ? true : ['invalid.matching.passwords']
}
})
}
static transients = ['password1','password2']
}
В 1.3.7 это используется для работы в моем Bootstrap:
def user1= new User (email: "[email protected]", password1: "123456", password2: "123456")
user1.save()
Однако в Grails 2.0.x это приведет к по ошибке, указав, что пароль1 и пароль2 равны нулю. То же самое происходит и в моих контроллеров, если я пытаюсь сделать:
def user2= new User (params)// params include email,password1 and password2
Для того, чтобы сделать его работу я должен сделать следующий обходной путь:
def user2= new User (params)// params include email,password1 and password2
user2.password1=params.password1
user2.password2=params.password2
user2.save()
Это довольно некрасиво - и раздражает.
Может ли кто-нибудь сказать, что мое использование переходных процессов стало недействительным в grails 2.x, или если это может быть некорректной ошибкой структуры?
Спасибо, Burt - Имеет смысл с этим изменением, связанным с безопасностью. Просто не знал о (новом?) «Связующем» ограничении. –
Эй, Берт, это изменилось в 2.1.0? У меня точно такой же сценарий, и для нас «cnfPassword» по-прежнему считается нулевым! Не хочу открывать новую тему для того же вопроса :) – Sap
Привет, Берт, он не работает должным образом в грабелях 2.4.3. Есть ли альтернативное решение, которое вы можете посоветовать? – daimon