Sau khi di chuyển từ Grails 1.3.7 đến 2.0.4, tôi đã nhận thấy có vấn đề với một trong các lớp miền của tôi nơi tôi sử dụng các thuộc tính tạm thời để xử lý mật khẩu.Các thuộc tính tạm thời của Grails không được chọn đối tượng tạo ra
lớp miền của tôi trông như thế này (giản thể):
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']
}
Trong 1.3.7 này đã từng làm việc trong Bootstrap của tôi:
def user1= new User (email: "[email protected]", password1: "123456", password2: "123456")
user1.save()
Tuy nhiên, trong Grails 2.0.x này sẽ cho kết quả trong lỗi nói rằng password1 và password2 đều là null. Điều tương tự cũng xảy ra trong các bộ điều khiển của tôi nếu tôi cố gắng làm:
def user2= new User (params)// params include email,password1 and password2
Để làm cho nó hoạt Tôi có thực hiện giải pháp sau đây:
def user2= new User (params)// params include email,password1 and password2
user2.password1=params.password1
user2.password2=params.password2
user2.save()
này là khá xấu xí - và gây phiền nhiễu.
Bất cứ ai có thể nói nếu việc sử dụng transients của tôi đã trở thành không hợp lệ trong grails 2.x, hoặc nếu điều này có thể là một lỗi khuôn khổ của một số loại?
Cảm ơn Burt - Làm cho cảm giác tốt với sự thay đổi liên quan đến bảo mật này. Chỉ là không nhận thức được ràng buộc (mới?) 'Ràng buộc' được. –
Hey Burt, điều này có thay đổi trong 2.1.0 không? Tôi có một kịch bản chính xác và cho chúng tôi "cnfPassword" vẫn đến như là null! Không muốn mở một chủ đề mới cho cùng một câu hỏi :) – Sap
Xin chào Burt, nó không hoạt động đúng trong grails 2.4.3. Có giải pháp thay thế nào mà bạn có thể tư vấn không? – daimon