क्या कोई वर्ग (मुफ़्त, मुक्त स्रोत या वाणिज्यिक) है जो जावा के AccessController के समान पहुंच नियंत्रण करता है? मैं नीतियों का एक गतिशील सेट बनाना चाहता हूं जिसे रनटाइम पर बदला जा सकता है।क्या जावा की अनुमति प्रबंधक या एक्सेस कंट्रोलर कक्षाओं के बराबर डेल्फी है?
लेकिन, मुझे हर जगह कोड करने के लिए
if Allowed(...) then
होने से बचना चाहते हैं। मुझे पता है कि मुझे शायद अपने प्रोग्राम क्लास पदानुक्रम को समायोजित करने की आवश्यकता है, लेकिन मैं पसंद करता हूं कि जगह पर मैन्युअल रूप से गार्ड जोड़ना।
यदि कोई उपयोग करने योग्य कोड नहीं है, तो एक समझदार दृष्टिकोण क्या होगा? RTTI?
संपादित करें: यहां Security Annotations and Authorization in GlassFish and the Java EE 5 SDK आलेख का एक उदाहरण दिया गया है। के बाद से किसी एक टिप्पणी में एनोटेशन उल्लेख किया है, मुझे लगता है कि यह आदर्श होगा:
@Stateless
@RolesAllowed("javaee")
public class HelloEJB implements Hello {
@PermitAll
public String hello(String msg) {
return "Hello, " + msg;
}
public String bye(String msg) {
return "Bye, " + msg;
}
}
लेख से:
इस उदाहरण में, हैलो() विधि हर किसी के द्वारा पहुँचा जा सकता है, और अलविदा () विधि javaee के उपयोगकर्ताओं द्वारा विधि सुलभ है।
संपादित करें: ठीक है, ऐसा लगता है आम सहमति है कि इस डेल्फी में नहीं किया जा सकता है। दूसरों को लगता है कि यह एक बुरा दृष्टिकोण है।
मुझे, मुझे अभी भी लगता है कि यह बहुत अच्छा होगा। जावा में एनोटेशन के साथ मेरा अनुभव (टोटेम ध्रुव में एक कोड बंदर रास्ता के रूप में) सकारात्मक है। आप एक नई विधि जोड़ते हैं, आप एनोटेशन का कुछ रूप जोड़ते हैं (बिल्कुल जावा सुरक्षा एनोटेशन के समान नहीं) और आप कर चुके हैं। एक व्यवस्थापक बाद में व्यवस्थापक पैनल पर जा सकता है और इस नए हैंडलर को समूह या व्यक्तिगत उपयोगकर्ताओं को अनुदान पहुंच जोड़ सकता है। यह सिर्फ काम करता है।
ये मेरे वर्तमान विकल्प हैं:
- TMS Security System - यह एक पूर्ण समाधान, कई उपकरणों के साथ की तरह दिखाई देता है। देखने लायक मैं इसे एक उत्तर के रूप में स्वीकार कर रहा हूं भले ही मैं शायद इसके लिए नहीं जा रहा हूं।
- यह ऐसा कुछ है जो आशाजनक दिखता है: Delphi virtual method interception। यह केवल आभासी तरीकों पर काम करता है, लेकिन मुझे नहीं लगता कि इसका पालन करना बहुत मुश्किल है। यह और एनोटेशन एक दिलचस्प प्रणाली बना सकता है (ऐसा प्रतीत होता है कि यह मूल रूप से डेटास्नाप प्रमाणीकरण के लिए डिज़ाइन किया गया था)
- आपके एप्लिकेशन में केवल एक एक्शन मैनेजर होने के साथ, और सुनिश्चित करें कि सभी कार्रवाइयां केवल वहां से शुरू की जा सकती हैं। इस तरह आप एक्शन मैनेजर
OnExecute
विधि का उपयोग कर सकते हैं; मैंTAction.Name
प्रॉपर्टी को अनुमति नाम ("हैंडलर") के रूप में उपयोग करने का नाटक करता हूं, तालिका से अनुमत कार्यों की एक सूची पढ़ता हूं। मैं एडमिन यूआई में पूरी सूची प्रदर्शित करने के लिए एक्शन मैनेजर से एक्शन लिस्ट का उपयोग कर सकता हूं।
मुझे लगता है कि आप विशेषताओं का उपयोग करके समान कार्यक्षमता प्राप्त कर सकते हैं (यदि मैं गलत हूं तो मुझे क्रूस पर न लगाएं ...) यहां कुछ लिंक हैं: http://robstechcorner.blogspot.com/2009/09/so -what-is-rtti-rtti-is-acronym-for-run.html http://delphi.about.com/od/oopindelphi/a/delphi-attributes-understanding-using-attributes-in-delphi.htm http : //stackoverflow.com/questions/2657502/practical-usage-for-delphis-new-rtti-attributes-values – ComputerSaysNo
@DorinDuminica - एनोटेशन एकत्र किए जा सकते हैं और एक सूची में रखा जा सकता है ताकि मैं उन्हें एक विशिष्ट भूमिका नियुक्त कर सकूं? –
क्या आप डेल्फी कोड कैसा दिखना चाहिए इस पर नमूना कोड प्रदान कर सकते हैं? आप कहते हैं कि अगर आप अनुमत (...) तो 'नहीं करना चाहते हैं, लेकिन लिंक किए गए दस्तावेज़ों में पहला जावा नमूना' विरासत में मिला है Context.checkPermission (अनुमति); - यह मेरी पुस्तक में समान है। –