2012-07-02 17 views
11

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 में यह मेरा बूटस्ट्रैप में काम करता था:,

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 में अमान्य हो गया है, या यदि यह किसी प्रकार का ढांचा बग हो सकता है?

उत्तर

14

सुरक्षा कारणों से ट्रांजिस्टर अब ऑटो-बाध्य नहीं हैं। लेकिन आप आसानी से इसे 'बाइंडेबल' बाधा में जोड़कर काम कर सकते हैं (http://grails.org/doc/latest/ref/Constraints/bindable.html देखें)।

password2(nullable:true, blank: false, validator: {password, obj -> 

को
password2(bindable: true, nullable:true, blank: false, validator: {password, obj -> 
+0

धन्यवाद बर्ट - इस सुरक्षा से संबंधित परिवर्तन के साथ अच्छी समझ में आता है। बस (नई?) 'बाध्यकारी' बाधा के बारे में पता नहीं था। –

+1

हे बर्ट, क्या यह 2.1.0 में बदल गया है? मेरे पास एक ही परिदृश्य है और हमारे लिए "cnfPassword" अभी भी शून्य के रूप में आता है! एक ही प्रश्न के लिए एक नया धागा खोलना नहीं चाहते :) :) – Sap

+2

हाय बर्ट, यह grails 2.4.3 में ठीक से काम नहीं कर रहा है। क्या कोई वैकल्पिक समाधान है जिसे आप सलाह दे सकते हैं? – daimon

3

मुझे लगता है कि ग्रिल्स 2.x में डेटा बाध्यकारी सुधार के हिस्से के रूप में - यह क्षणिक गुणों को बाध्य नहीं करेगा।

+1

इस तो ऐसा करने के लिए एक वैकल्पिक तरीका है बदलें? – sttaq

संबंधित मुद्दे