2012-04-23 14 views
7

में नई भूमिकाएं बनाने और पंजीकृत करने के लिए मैं आधिकारिक Symfony2 doc on Security से देखता हूं कि "शास्त्रीय" (यानी ROLE_USER, ROLE_ADMIN, आदि) के अलावा नई भूमिकाओं को परिभाषित किया जा सकता है।Symfony2

मैं नई भूमिकाओं कैसे परिभाषित और व्यवस्था security.yml में भूमिका पदानुक्रम बनाने के लिए मेरी Symfony2 आवेदन करने के लिए उन्हें रजिस्टर कर सकते हैं?

आप सभी को परेशान करने के लिए खेद है! मुझे लगता है कि जवाब सरल है। वास्तव में, ऐसा लगता है कि ROLE_ के साथ नाम शुरू करके एक नई भूमिका का उपयोग शुरू करने के लिए पर्याप्त है। उदा।, ROLE_NEWS_AUTHOR कहने के लिए संभव है कि केवल उस भूमिका वाले लोग वेबसाइट पर समाचार डालने में सक्षम हों।

धन्यवाद।

उत्तर

13

सुनिश्चित करें कि आप बस ROLE_SOMEROLE.In security.yml फ़ाइल के साथ शुरू किसी भी भूमिकाओं में जोड़ सकते हैं वहाँ पहुँच 2. कौन सदस्य ही

एक का उपयोग कर सकते हैं 1.limit दो मुख्य हिस्सा हैं। access_control: जो पैटर्न को सीमित करता है और उस भूमिका को निर्दिष्ट करता है जो एक्सेस कर सकता है। बी। role_hierarchy: यहां नीचे की श्रेणी के लिए भूमिका की पदानुक्रमिक संरचना, एक व्यवस्थापक उपयोगकर्ता (ROLE_ADMIN) में ROLE_USER, ROLE_NEWS_AUTHOR भूमिकाएं हैं। तो वह एक उपयोगकर्ता और NEWS_AUTHOR के सभी पृष्ठों तक पहुंच सकता है। जो भी पदानुक्रम आप दे सकते हैं।

access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }/login any one can access this pattern 
     - { path: ^/admin/, roles: ROLE_ADMIN }//block all pattern /admin/anything* 
     - { path: ^/news/, roles: ROLE_NEWS_AUTHOR } //block all pattern /news/anything* 
role_hierarchy: 
     ROLE_ADMIN: [ROLE_USER,ROLE_NEWS_AUTHOR] 

अपने नियंत्रक आप भूमिकाओं की जांच कर सकते में,

if(TRUE ===$this->get('security.context')->isGranted('ROLE_ADMIN')) 
{ 
    // do something related to ADMIN 
} 
else if(TRUE ===$this->get('security.context')->isGranted('ROLE_NEWS_AUTHOR')) 
{ 
    // do something related to News Editor 
} 

आशा यह आप में मदद करता है। हैप्पी कोडिंग।

+0

अतिरिक्त जानकारी के लिए धन्यवाद। – JeanValjean

+0

यह भी ध्यान रखें कि भूमिकाओं के नाम हमेशा "ROLE_" से शुरू होना चाहिए या सिम्फनी उन्हें पहचान नहीं पाएंगे। – DarksteelPenguin