2013-06-02 3 views
0

원하는 방식으로 보안을 유지하는 데 문제가 있습니다.공용 영역의 Symfony2 관리 토큰

ROLE_ADMIN 사람 만 액세스 할 수 있도록 관리 부분을 보호하고 싶습니다. 그리고 그것은 잘 작동합니다. 그러나, 나는 내 보호되지 않은 공개/ 지역 ROLE_ADMIN 사이 IS_AUTHENTICATED_ANONYMOUSLY을 구별 할 수 있어야합니다.

나는 제대로 작동하지 않습니다. 내가 관리 섹션에 로그인하면. 툴바에서 인증을 받았으며 ROLE_ADMIN을 볼 수 있지만 웹 사이트의 공개 섹션으로 돌아 가면 으로 익명 인증 된으로 바뀝니다.

jms_security_extra: 
    secure_all_services: false 
    expressions: true 

security: 
    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     in_memory: 
      memory: 
       users: 
        myusername: { password: mypassword, roles: [ 'ROLE_ADMIN' ] } 

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

     login_area: 
      pattern: ^/login$ 
      anonymous: ~ 

     secured_area: 
      pattern: ^/admin|^/login_check$|^/logout$ 
      form_login: ~ 
      logout: ~ 

     public_area: 
      pattern: ^/ 
      anonymous: ~ 

    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, roles: ROLE_ADMIN } 
     - { path: ^/, roles: [ROLE_ADMIN, IS_AUTHENTICATED_ANONYMOUSLY] } 

당신은 내가 ROLE_ADMINIS_AUTHENTICATED_ANONYMOUSLY 역할 액세스 제어에 '^이 /'경로에 모두 추가 시도 볼 수 있듯이,하지만하지 않습니다 : 여기에

보안 설정이다는 내가 현재 가지고 아무것도 바꿔라.

Symfony2 책과 요리 책 항목을 모두 검색했지만이 문제와 관련하여 도움이되는 내용을 찾지 못했습니다.

답변

2

확인하고 20 분 후, 세 번째 시간 동안 Symfony2 책을 파고 후 나는이 발견 :

여러 방화벽을 사용하는 경우 다중 방화벽 보안 컨텍스트

를 공유하지 않는 하나의 방화벽에 대해 인증하면 다른 방화벽에 대해 자동으로 인증되지 않습니다.

- { path: ^/admin, roles: ROLE_ADMIN } 
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
:

단지이 하나의 '^ /'패턴 방화벽 및 설정 access_control을 사용하기 충분했다