साथ मैं अपने role_hierarchy के साथ एक बड़ी समस्या है,role_hierarchy Symfony2
security:
role_hierarchy:
ROLE_ADMIN:[ROLE_USER,ROLE_AUTHOR,ROLE_MODERATOR]
ROLE_SUPER_ADMIN:[ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
उस के साथ
, अगर मैं SUPER_ADMIN भूमिका मिली, मैं ROLE_AUTHOR, ROLE_MODERATOR, ROLE_USER और ROLE_ADMIN मिला होगा। लेकिन मेरी समस्या यह है कि जब मैं अपनी वेबसाइट पर लॉगिन करता हूं, अगर मैं प्रोफाइलर की जांच करता हूं, तो मैं देख सकता हूं कि मुझे केवल ROLE_SUPER_ADMIN मिल गया है, अन्य भूमिकाएं नहीं, तो क्या आप मेरी मदद कर सकते हैं?
मेरे विचार (base.html.twig
)
<h3>Blog</h3>
<ul class="nav nav-pills nav-stacked">
<li><a href="{{ path('dom_home') }}">Home Page</a></li>
{% if is_granted('ROLE_AUTHOR') %}
<li><a href="{{ path('dom_add') }}">Add a post</a></li>
{% endif %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<li><a href="{{ path('fos_user_security_logout') }}">Logout</a></li>
{% else %}
<li><a href="{{ path('fos_user_security_login') }}">login</a></li>
<li><a href="{{ path('fos_user_registration_register') }}">register</a></li>
{% endif %}
</ul>
मेरी security.yml
(एप्लिकेशन/config)
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: [ROLE_USER,ROLE_AUTHOR,ROLE_MODERATOR]
ROLE_SUPER_ADMIN: [ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_manager
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/(login$|register|resetting)
anonymous: true
main:
pattern: ^/
form_login:
provider: fos_userbundle
remember_me: true
always_use_default_target_path: true
default_target_path: /dom/
remember_me:
key: %secret%
anonymous: false
logout: true
संपादित करें:
मेरे विचार (base.html.twig)
<h3>Blog</h3>
<ul class="nav nav-pills nav-stacked">
<li><a href="{{ path('dom_home') }}">Home Page</a></li>
{% if is_granted('ROLE_AUTHOR') %}
<li><a href="{{ path('dom_add') }}">Add a post</a></li>
{% endif %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<li><a href="{{ path('fos_user_security_logout') }}">Logout</a></li>
{% else %}
<li><a href="{{ path('fos_user_security_login') }}">login</a></li>
<li><a href="{{ path('fos_user_registration_register') }}">register</a></li>
{% endif %}
</ul>
मेरी security.yml (एप्लिकेशन/config)
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: [ROLE_USER,ROLE_AUTHOR,ROLE_MODERATOR]
ROLE_SUPER_ADMIN: [ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_manager
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/(login$|register|resetting)
anonymous: true
main:
pattern: ^/
form_login:
provider: fos_userbundle
remember_me: true
always_use_default_target_path: true
default_target_path: /dom/
remember_me:
key: %secret%
anonymous: false
logout: true
उत्तर दें :)
पदानुक्रम मतलब यह नहीं है, कि आप स्पष्ट रूप से इन भूमिकाओं में जुड़ जाते हैं, यानी कि जब आप प्रोफाइलर की जांच करें जिसमें आप सभी भूमिकाएं नहीं देखते हैं। इसका मतलब केवल यह है कि पहुंच "विरासत" है।दूसरे शब्दों में, जब आप ROLE_MODERATOR को किसी क्रिया तक पहुंच प्रतिबंधित करते हैं, भले ही आपको यह भूमिका नियुक्त नहीं की जाती है, फिर भी आप कार्रवाई को तब तक एक्सेस कर सकते हैं क्योंकि ROLE_SUPER_ADMIN पहुंच प्राप्त करता है। – dbrumann
ठीक है, लेकिन अगर मैं कर रहा हूं is_granted ('ROLE_MODERATOR'), तो मैं इसका उपयोग कर पाऊंगा? पसंद है: {% अगर is_granted ('ROLE_MODERATOR')%} मॉडरेटर {% else%} कोई मॉडरेटर {% endif%}, एक ट्वेंग टेम्पलेट में, मैं मॉडरेटर देखने में सक्षम हूं? – Stickly
मैंने अभी यह कोशिश कर रहा है और यह – Stickly