Po migracji z Grails 1.3.7 do 2.0.4 Zauważyłem problem z jedną z moich klas domeny, w której używam właściwości przejściowych w celu obsługi haseł.Właściwości przejściowe Graal nie zostały wykryte przy tworzeniu obiektu
Moja klasa domeny wygląda następująco (uproszczony):
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']
}
W 1.3.7 to używane do pracy w moim bootstrap:
def user1= new User (email: "[email protected]", password1: "123456", password2: "123456")
user1.save()
Jednak w Grails 2.0.x spowoduje w błędzie stwierdzając, że hasło 1 i hasło 2 mają wartość NULL. To samo dzieje się w moich kontrolerami jeśli staram się robić:
def user2= new User (params)// params include email,password1 and password2
Aby to działało muszę zrobić następujące obejście:
def user2= new User (params)// params include email,password1 and password2
user2.password1=params.password1
user2.password2=params.password2
user2.save()
Jest to dość brzydkie - i denerwujące.
Czy ktoś może powiedzieć, czy moje używanie transjentów stało się nieważne w grails 2.x, czy może to jakiś rodzaj jakiegoś błędu ramowego?
Dzięki Burt - ma sens z tą zmianą związaną z bezpieczeństwem. Po prostu nie wiedział o (nowym?) "Wiążącym" ograniczeniu. –
Hej, Burt, czy to zmieniło się w wersji 2.1.0? Mam dokładnie taki sam scenariusz i dla nas "cnfPassword" nadal jest zerowe! Nie chcę otwierać nowego wątku dla tego samego pytania :) – Sap
Witam Burt, nie działa poprawnie w grailsach 2.4.3. Czy istnieje jakieś alternatywne rozwiązanie, które możesz doradzić? – daimon