Grails 1.3.7から2.0.4への移行後、パスワードを処理するために一時的なプロパティを使用するドメインクラスに問題があることがわかりました。しかし、Grailsの2.0.xカーネルでは、これが発生しますオブジェクトの作成時にGrailsの一時的なプロパティが取得されない
def user1= new User (email: "[email protected]", password1: "123456", password2: "123456")
user1.save()
:1.3.7で
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']
}
これは私のブートストラップで動作するように使用:
マイドメインクラスは、この(簡体字)のように見えますpassword1とpassword2の両方がヌルであることを示すエラーが発生しました。私がしようとした場合 同じことが私のコントローラで起こる:
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"はまだnullになっています!同じ質問の新しいスレッドを開こうとしないでください:) – Sap
Burtさん、Grails 2.4.3で正しく動作していません。アドバイスできる代替ソリューションはありますか? – daimon