2015-08-27 4 views
5

मुझे अपने फ़ायरवॉल नियम को सही तरीके से काम नहीं मिल रहा है। मेरे पास एक उपयोगकर्ता है जिसमें D-COMPLIANCEDIALOG भूमिका है, और फ़ायरवॉल नियम है, जो उस नियम तक पहुंच प्रदान करता है: - { path: ^/ , roles: D-COMPLIANCEDIALOG }। मुझे अभी भी एक एक्सेस अस्वीकार कर दिया गया है (प्रवेश अस्वीकार कर दिया गया है, उपयोगकर्ता न तो अज्ञात है, न ही मुझे याद है।)।सिम्फनी 2 फ़ायरवॉल: उपयोगकर्ता की सही भूमिका है लेकिन "एक्सेस अस्वीकृत"

#security.yml 

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
    providers: 
     reddot: 
      id: reddot_user_provider 

    firewalls: 

     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     secured_area: 
      pattern: ^/ 
      anonymous: ~ 
      http_basic: ~ 
      simple_form: 
       authenticator: reddot_authenticator 
        check_path: login_check 
        login_path: login 

    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/ , roles: D-COMPLIANCEDIALOG } 

सिम्फोनी प्रोफाइलर से उपयोगकर्ता डेटा:

Username admin 
Authenticated? yes 
Roles [D-COMPLIANCEDIALOG] 
Inherited Roles  { } 
Token class Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken 

मैं क्या जांच की गई:

  • नियंत्रक कोई खुद सुरक्षा सेटिंग्स
  • भूमिका का नाम लिखने में कोई त्रुटि है प्रतीत नहीं होता है
  • फ़ायरवॉल नियम में यह वास्तव में आखिरी पंक्ति है, अगर मैं इसे हटा देता हूं, तो मेरे पास है पहुंच।
+0

आप अपने लॉगिन अभिगम नियंत्रण बनाने के लिए चाहते हो सकता है 'पथ: ^/लॉगिन $, भूमिका : IS_AUTHENTICATED_ANONYMOUSLY' '$' के साथ आपका लॉगिन_चेक रूट सुरक्षित है यह सुनिश्चित करने के लिए https://symfony.com/doc/master/bundles/FOSUserBundle/index.html#step-4-configure-your-plication-s-security-yml –

उत्तर

7

भूमिका का नाम गलत है। कृपया दस्तावेज Security - Roles

उपयोगकर्ता द्वारा निर्दिष्ट सभी भूमिकाएं ROLE_ उपसर्ग के साथ शुरू होनी चाहिए। अन्यथा, उन्हें सामान्य तरीके से सिम्फनी की सुरक्षा प्रणाली द्वारा नियंत्रित नहीं किया जाएगा (यानी जब तक कि आप कुछ उन्नत नहीं कर रहे हैं, उपयोगकर्ता को फूड जैसी भूमिका निभाते हैं और फिर नीचे वर्णित फूड की जांच करना काम नहीं करेगा)।

मुझे 'गलत' भूमिका नाम दर्ज करते समय एक ही समस्या का सामना करना पड़ा और त्रुटि संदेश भी उलझन में था।

0

हालांकि Symfony suggest ROLE_ साथ भूमिकाओं लगाकर .. तुम अब भी तरह Securing by an Expression के माध्यम से अपने कस्टम भूमिकाओं का उपयोग कर सकते हैं:

access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/ , allow_if: "has_role('D-COMPLIANCEDIALOG')"} 
संबंधित मुद्दे