2012-07-26 13 views
11

मैं काफी समय से Grails का अध्ययन कर रहा हूं। और फ़िल्टर और इंटरसेप्टर के बारे में थोड़ा सा स्कैन किया। दोनों सत्रों को ट्रैक करने या किसी विशेष नियंत्रक में अनधिकृत उपयोगकर्ताओं को पुनर्निर्देशित करने की लगभग समान कार्यक्षमता रखते हैं।Grails फ़िल्टर बनाम इंटरसेप्टर

लेकिन मैं उलझन में हूं कि मुझे फ़िल्टर और इंटरसेप्टर से फ़िल्टर का उपयोग क्यों करना चाहिए और इसके विपरीत। यह देखते हुए कि इंसेप्टर्स के पास दो नियंत्रक विधियां beforeInterceptor और afterInterceptor और फ़िल्टर के लिए तीन सामान्य बंद before, after और afterView हैं।

मेरे प्रश्न यह है कि इंटरसेप्टर या इसके विपरीत फ़िल्टर के उपयोग के पेशेवर और विपक्ष क्या हैं। इस तरह, डेवलपर्स, तय कर सकते हैं कि कुछ ट्रैकिंग, रीडायरेक्ट आदि करने के लिए हमें किसी विशेष नियंत्रक में फ़िल्टर या इंटरसेप्टर का उपयोग क्यों करना चाहिए।

उत्तर

14

अवरोध के दौरान नियंत्रक में एक या दोनों इंटरसेप्टर का उपयोग करें तर्क केवल उस नियंत्रक पर लागू होता है।

एक फ़िल्टर का उपयोग करें जब तर्क एकाधिक (या सभी) नियंत्रकों पर लागू होता है, या जब आपको दृश्य के बाद कुछ करने की आवश्यकता होती है (बाद में दृश्य के समकक्ष कोई इंटरसेप्टर नहीं होता है), या यदि आप बस सबकुछ केंद्रित करना चाहते हैं अलग नियंत्रक फ़ाइलों में फैलाने के बजाय एक जगह।

+4

मुझे लगता है। लेकिन क्या आप समान अवरोध तर्क रखने के लिए एक सार नियंत्रक नहीं बना सकते हैं और यह नियंत्रक अन्य सभी नियंत्रकों के माता-पिता होने दें? हम किस उदाहरण पर कह सकते हैं कि हमें इसके बाद 'फ़िल्टर' के बंद होने पर 'फ़िल्टर' द्वारा घोषित फ़िल्टरिंग तर्क की आवश्यकता है? –

+0

और फिर आपको थोड़ा अलग तर्क की आवश्यकता होगी, इसलिए एक और सार नियंत्रक बनाने की आवश्यकता है। फ़िल्टर आपको एक ही स्थान पर कोड को ध्यान में रखने में मदद कर सकते हैं और उन निर्भरताओं को छोड़ सकते हैं जिनकी आपको वास्तव में आवश्यकता नहीं है। –

0

पुराने फ़िल्टर (Grails 2 से) Grails 3 में बहिष्कृत हैं। फ़िल्टर के प्रतिस्थापन इंटरसेप्टर हैं।

इंटरसेप्टर के उपयोग जैसे कार्यों के लिए है: प्रमाणीकरण, loggin, आदि
इंटरसेप्टर (के रूप में उनके नाम का तात्पर्य) भेजे वेब अनुरोध अवरोध उत्पन्न कर रहा है और एक संबंधित कार्रवाइयों को गति प्रदान कर रहे हैं। कार्यों को संबंधित नियंत्रक में परिभाषित किया गया है।

इंटरसेप्टरों के पास स्थिर संकलन के लिए समर्थन जैसे कुछ प्रमुख लाभ (फ़िल्टर पर) हैं, और लचीली कॉन्फ़िगरेशन सक्षम करते हैं।
ये इंटरसेप्टर का मुख्य 3 तरीके हैं:
- बूलियन से पहले() {} सच
- के बाद (बुलियन) {} सच
- शून्य afterView() {}

Iterceptors को स्प्रिंग बीन्स (स्प्रिंग एप्लिकेशन संदर्भ में) के रूप में कॉन्फ़िगर किया गया है और उनके नाम से ऑटो-वायर्ड होने के लिए कॉन्फ़िगर किया गया है।

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