Dopo la migrazione da Grails 1.3.7 a 2.0.4 ho notato un problema con una delle mie classi di dominio in cui utilizzo le proprietà transitori per gestire le password.Proprietà transitori Grails non rilevate nella creazione dell'oggetto
La mia classe di dominio si presenta così (semplificato):
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']
}
In 1.3.7 Ciò usata per funzionare nel mio Bootstrap:
def user1= new User (email: "[email protected]", password1: "123456", password2: "123456")
user1.save()
Tuttavia, in Grails 2.0.x questo si tradurrà in errore affermando che password1 e password2 sono entrambi nulli. La stessa cosa accade nel mio controller se cerco di fare:
def user2= new User (params)// params include email,password1 and password2
Al fine di farlo funzionare devo fare la seguente soluzione:
def user2= new User (params)// params include email,password1 and password2
user2.password1=params.password1
user2.password2=params.password2
user2.save()
questo è abbastanza brutto - e fastidioso.
Qualcuno può dire se il mio utilizzo dei transitori non è più valido in Grails 2.x, o se questo potrebbe essere un bug di qualche tipo?
Grazie Burt: ha un buon senso con questo cambiamento legato alla sicurezza. Semplicemente non ero a conoscenza del (nuovo?) Vincolo 'legabile'. –
Hey Burt, è cambiato in 2.1.0? Ho lo stesso identico scenario e per noi "cnfPassword" viene ancora come null! Non voglio aprire una nuova discussione per la stessa domanda :) – Sap
Ciao Burt, non funziona correttamente in Grails 2.4.3. C'è qualche soluzione alternativa che puoi consigliare? – daimon