2012-11-18 24 views
5

मैं अपने मेनू कॉन्फ़िगरेशन को लोड करने के लिए this guide का पालन कर रहा हूं और मुझे लगता है कि यह मेनू लोड करने के लिए बहुत अच्छा और साफ तरीका है।ज़ेंड फ्रेमवर्क 2 में एसीएल लोड करने का एक आसान तरीका?

मेरा प्रश्न सरल है, क्या आपके एसीएल कॉन्फ़िगरेशन को कॉन्फ़िगरेशन सरणी और कुछ प्रकार के फैक्ट्री के साथ लोड करने का कोई तरीका है?

यदि नहीं है, तो मैं एक एसीएल कॉन्फ़िगरेशन कैसे लोड करूं और उस मेनू के साथ आसानी से उपयोग कैसे करूं?

धन्यवाद!

संपादित करें: यही कारण है कि उपयोग मॉड्यूल कि पहले से ही किया है और नहीं कर रहा है अपना खुद का बनाएँ पर एक बहुत अच्छा ब्लॉग पोस्ट है, http://hounddog.github.com/blog/there-is-a-module-for-that/

उत्तर

5

ZF2 एसीएल और भी RBAC (भूमिका आधारित एसीएल शामिल की getViewHelperConfig() - हो सकता है ZF2 में। 1), लेकिन इसे जगह में रखने के लिए, मॉड्यूल का उपयोग करना आसान है जिसे आप अपने एप्लिकेशन में प्लग कर सकते हैं। BjyAuthorize मुझे थोड़ा फूला हुआ लगता है, आपको ZfcUser मॉड्यूल का उपयोग करना होगा। मैं ZfcRbac पसंद करता हूं, एसीएल नियम उपयोगकर्ता भूमिकाओं (समूह) और नियंत्रक, क्रिया या मार्ग तक पहुंच पर आधारित होते हैं। एक कॉन्फ़िगरेशन फ़ाइल में संग्रहीत कॉन्फ़िगरेशन, वास्तव में कार्यान्वित करने में आसान है।

+0

हाँ, यह सभी ZF1 में इतना आसान था कि कुछ के लिए इतना कोड जोड़ने की तरह लगता है। मुझे लगता है कि इसे बनाने के लिए मुझे इस तरह के मॉड्यूल का उपयोग करना होगा। – Rickard

5

संभवत: यह करने के लिए कई तरीके हैं, लेकिन मैं यह करने के लिए पसंद करते हैं आवेदन के Module.php (यहाँ मैं BjyAuthorize मॉड्यूल का उपयोग एसीएल के साथ काम आसान बनाने के लिए, और विशेष रूप से यह विन्यास फाइल module.bjyauthorize.global.php में एसीएल नियम निर्धारित करने की अनुमति देता)

public function getViewHelperConfig() 
{ 
    return array(
     'factories' => array(
      'navigation' => function($sm) { 
       $auth = $sm->getServiceLocator()->get('BjyAuthorize\Service\Authorize'); 
       $role = $auth->getIdentityProvider()->getIdentityRoles(); 
       if (is_array($role)) 
        $role = $role[0]; 

       $navigation = $sm->get('Zend\View\Helper\Navigation'); 
       $navigation->setAcl($auth->getAcl())->setRole($role); 

       return $navigation; 
      } 
     ) 
    ); 
} 
+2

मैं ज़ेड 1 में बहुत कुछ सरल और स्पष्ट में [this] (http://blog.hackix.com/2009/12/zend_acl-zend_navigation/) का उपयोग करता हूं। मुझे यह अजीब लगता है कि मुझे जेडएफ 2 के लिए कुछ आसान नहीं मिल रहा है। ये सभी मॉड्यूल जटिल होने का तरीका महसूस करते हैं। – Rickard

+0

इस तरह से भी संभव है ('ज़ेंड \ अनुमतियां \ एसीएल \ एक्ल' लगभग' Zend_Acl' के समान है), और 'BjyAuthorize' परियोजना में एसीएल जोड़ने के लिए कम कोड लिखने की अनुमति देता है। ऐसा लगता है कि एसीएल, प्रमाणीकरण, नेविगेशन इत्यादि के संयोजन पर कोई व्यापक मार्गदर्शिका नहीं है। मैंने केवल googled किया है: http://p0l0.binware.org/index.php/2012/02/18/zend-framework -2-प्रमाणीकरण-एसीएल-उपयोग-घटना प्रबंधक/ https://samsonasik.wordpress.com/2012/08/23/zend-framework-2-controllerpluginmanager-append-controller-pluginto-all-controller/ –

1

आप सही हैं, बॉक्स ऑफ-ऑल-इन-वन समाधान नहीं है। आपको मॉड्यूल के बीच कुछ पुलों का निर्माण करना होगा।

एकीकृत करने के लिए BjyAuthorize एक और आसान तरीका उपयोग कर रहा है ** Zend नेविगेशन ** डिफ़ॉल्ट तरीके के रूप में रोब एलन द्वारा वर्णित: Integrating BjyAuthorize with ZendNavigation

$sm = $e->getApplication()->getServiceManager(); 

    // Add ACL information to the Navigation view helper 
    $authorize = $sm->get('BjyAuthorizeServiceAuthorize'); 
    $acl = $authorize->getAcl(); 
    $role = $authorize->getIdentity(); 
    ZendViewHelperNavigation::setDefaultAcl($acl); 
    ZendViewHelperNavigation::setDefaultRole($role); 

तुम भी ZfcRbac का उपयोग करें और एक श्रोता के लिए उपयोग कर सकते हैं इसे ज़ेंड नेविगेशन के साथ काम करें। इस संरचना के साथ Check Zend Navigation page permissions with ZfcRbac – Webdevilopers Blog

3

खेल:

इस के बाद से कोड का एक बहुत मैं बस लिंक यहां पोस्ट है। डेटाबेस से भूमिका और संसाधन प्राप्त करें और इसे सत्र में या किसी भी कैशिंग में सहेजें।

Play with This structure

+0

मेरे मामले में मैंने उपयोगकर्ता टैबलेट में role_id डाला, क्योंकि कभी भी मुझे संबंधित तालिका उपयोगकर्ता-भूमिका के लिए कोई मामला नहीं था ... – tasmaniski

1

मैं सिर्फ एक एसीएल मॉड्यूल है कि एक एसीएल सेवा मार्गों को पार्स बनाता बना लिया है।

अपने आवेदन पर अपने पहुंच नियंत्रण का प्रबंधन करने के लिए आपको केवल भूमिकाओं को परिभाषित करने और प्रत्येक मार्ग में एक नई कुंजी 'भूमिकाएं' जोड़ने की आवश्यकता है। यदि आप उस कुंजी को परिभाषित नहीं करते हैं या इसकी सरणी खाली है, तो मार्ग सार्वजनिक हो जाता है। यह बाल मार्गों के साथ भी काम करता है।

एक उदाहरण के रूप:

array(
    'router' => array(
     'routes' => array(
      'user\users\view' => array(
       'type'    => 'Segment', 
       'options'   => array(
        'route'   => '/admin/users/view/id/:id/', 
        'constraints' => array(
         'id' => '[0-9]+', 
        ), 
        'defaults' => array(
         'controller' => 'User\Controller\Users', 
         'action'  => 'view', 
         'roles'  => ['admin', 'user'], 
        ), 
       ), 
      ), 
     ), 
    ), 
); 

मॉड्यूल संगीतकार के माध्यम से स्थापित किया जा सकता है और अब यह Zend मॉड्यूल भंडार में सूचीबद्ध है: http://zfmodules.com/itrascastro/TrascastroACL

आप से उपयोग और स्थापना के बारे में विस्तृत जानकारी प्राप्त कर सकते हैं मेरे ब्लॉग: http://www.ismaeltrascastro.com/acl-module-zend-framework/