में भूमिका/संसाधन एसीएल को कार्यान्वित करने के लिए कैसे मैं सिमफ़ोनी 2 में एक्सेस कंट्रोल सूचियों को लागू करने के तरीके से थोड़ा विचलित हूं।सिम्फनी 2
Zend फ्रेमवर्क में (संस्करण 1 & 2), संसाधनों की एक सूची और भूमिकाओं की एक सूची परिभाषित कर रहे हैं और प्रत्येक भूमिका संसाधनों का एक सबसेट यह उपयोग करने के लिए अनुमति दी गई है असाइन किया गया है। इसलिए संसाधन और भूमिकाएं एसीएल कार्यान्वयन की मुख्य शब्दावली हैं, जो सिम्फनी 2 में नहीं है, जहां केवल भूमिकाएं शासन करती हैं।
लेगेसी एप्लिकेशन डेटाबेस में, मैं भूमिकाओं की एक सूची, संसाधनों की एक सूची और प्रत्येक भूमिका के लिए अनुमति दी संसाधनों की एक सूची को परिभाषित टेबल है (अनेक-से-अनेक संबंध)। प्रत्येक उपयोगकर्ता को एक भूमिका नियुक्त की जाती है (व्यवस्थापक, सुपर व्यवस्थापक, संपादक, और ऐसे)।
मैं एक Symfony2 आवेदन में इस डेटाबेस का उपयोग करने की जरूरत है। मेरे संसाधन इस तरह दिखेगा: ARTICLE_EDIT, ARTICLE_WRITE, COMMENT_EDIT, आदि
Symfony में मेरे User
इकाई Symfony\Component\Security\Core\User\UserInterface
इंटरफ़ेस लागू करता है और इसलिए एक getRoles)
विधि है।
मैं अनुमति संसाधनों को परिभाषित करने, जिसका मतलब है मैं संसाधनों के रूप में भूमिकाओं (मेरा मतलब है कि Zend फ्रेमवर्क में क्या कहते हैं संसाधन भूमिकाओं यहाँ कहा जाता है) का उपयोग इस विधि का उपयोग करना चाहते हैं।
क्या आप पुष्टि करते हैं कि मुझे इस विधि का उपयोग करना चाहिए?
इसका मतलब यह है कि मैं प्रत्येक उपयोगकर्ता की भूमिका (व्यवस्थापक, संपादक, ...) के बारे में अब और कोई परवाह नहीं है, लेकिन केवल अपने संसाधनों के बारे में।
मैं अपने नियंत्रकों में $this->get('security.context')->isGranted('ROLE_ARTICLE_WRITE')
का उपयोग करूंगा।
इस यह करने के लिए सही रास्ता है और यह Symfony में भूमिकाओं का उपयोग करने के लिए एक धोखा तरीका नहीं हो सकता है?