2011-07-11 7 views
5

मैं एक सदस्य और एक गैर सदस्य क्षेत्र के साथ खेलने के साथ एक वेबसाइट बनाने की कोशिश करता हूं। तो मेरे पास सदस्य और गैर-सदस्य विधियों के साथ नियंत्रक हैं। लेकिन मैं केवल पूरे नियंत्रक को सुरक्षित कर सकता हूं [@With (Secure.class)]। क्या यह संभवतः कुछ विधियों को सुरक्षित और लॉगिन के बिना दूसरों तक पहुंचाना संभव है?सुरक्षित और गैर-सुरक्षित विधियों के साथ फ्रेमवर्क नियंत्रक चलाएं। मुमकिन?

धन्यवाद

उत्तर

1

हां, आप यह कर सकते हैं। @With टिप्पणी निकालने और सुरक्षित नियंत्रक की इस विधि का उपयोग करें जब आप कनेक्ट किए गए उपयोगकर्ता के लिए उपयोग को सीमित करना चाहते हैं: इस विधि से

Secure.checkAccess(); 

, तुम भी @Check एनोटेशन का उपयोग कर सकते हैं। उदाहरण:

@Check("member") 
    public static void restrictedAction() { 
     Secure.checkAccess(); 
     ... 
    } 
+0

क्या आपने कभी मॉड्यूल के भीतर नियंत्रक से चेकएप विधि को कॉल करने का प्रयास किया है? यह काम नहीं लग रहा है। यह एक त्रुटि फेंकता है कि विधि दिखाई नहीं दे रहा है। दरअसल, जब आप विधि की परिभाषा देखते हैं, तो इसे डिफ़ॉल्ट रूप से सार्वजनिक के रूप में निर्दिष्ट नहीं किया जाता है। फिर यह ऐप नियंत्रकों में किसी भी समस्या के बिना कैसे काम करता है? – preslavrachev

1

नहीं, ऐसा करने का कोई आसान तरीका नहीं है। आप भूमिकाओं की जांच कर सकते हैं, लेकिन कनेक्ट उपयोगकर्ता नहीं, आगंतुक।

आपको @Before एनोटेशन जोड़ना होगा और यह थोड़ा जटिल होगा। बस अपने नियंत्रक को कई नियंत्रकों में तोड़ दें। वैसे भी, सार्वजनिक/निजी तरीकों को मिश्रित करने के बजाय, कार्यप्रणाली इसे बेहतर तरीके से करने के लिए बेहतर है। , आप कर सकते हैं, http://www.playframework.org/modules/deadbolt

2

आप deadbolt मॉड्यूल जो काफी शक्तिशाली है उपयोग कर सकते हैं। यदि आप @ सुरक्षित सुनिश्चित करते हैं तो इसमें @ पहले से एनोटेटेड विधि है। documentation के अनुसार आप यह संकेत दे सकते हैं कि @Before किस तरीके से लागू किया गया है और किसके लिए इसे छोड़ा गया है।

@Before(unless="login") 

तो यह सार्वजनिक तरीकों से पहले @ चलने की बात नहीं होगी। सावधान रहें कि यह @ विथ का उपयोग करके ठीक तरह से काम नहीं कर सकता है और आपको सुरक्षा का प्रबंधन करने वाले नियंत्रक में अपना स्वयं का @ पहले बनाने की आवश्यकता हो सकती है (सुरक्षित तरीके से उचित तरीके से कॉल करना)।

लेकिन यह केवल 2 नियंत्रकों के लिए आसान होगा, एक सुरक्षित उपयोगकर्ताओं के लिए और एक सार्वजनिक तरीकों के लिए।

3

हाँ, हालांकि यह सुरक्षित वर्ग पर कुछ सुधार करने की आवश्यकता होगी:

+0

मेरा उपरोक्त दो नियंत्रकों के सुझाव के लिए जाता है। मैं इस सवाल पर आया क्योंकि 'पहले' एनोटेशन 'विधि' के साथ ठीक से काम नहीं कर रहा है, जो कि छोड़ने वाले विधि नामों की सरणी है। आप उल्लेख करते हैं कि यह 'साथ' का उपयोग करके ठीक से काम नहीं कर सकता है, जो मेरा मामला है। क्या आपके पास कोई और जानकारी है कि वह क्यों है? बग, या डिजाइन साइड इफेक्ट? धन्यवाद! – palako