2012-03-10 2 views
4

symfony 2 보안 구성 요소에 유선 문제가 있습니다. {{ app.user }} 개체는 보안 영역에서만 사용할 수 있기 때문에 방화벽 패턴을 ^/으로 설정합니다. 이제 등록과 같은 일부 페이지를 "안전하지 않게"하고 싶습니다. access_control을 사용하여 이것을 시도했지만 작동하지 않습니다.symfony 2 - 방화벽 및 액세스 제어 문제

은 여기 내 security.yml

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

    login: 
     pattern: ^/account/login$ 
     security: false 

    account_area: 
     pattern: ^/ 
     form_login: 
      check_path: /account/login_check 
      login_path: /account/login 
      default_target_path: /account 
     remember_me: 
      key:  blaBlubKey 
      lifetime: 3600 
      path: /
      domain: ~ 
     logout: 
      path: /account/logout 
      target:/

access_control: 
    #works 
    - { path: ^/backend, roles: ROLE_USER } 
    #works not 
    - { path: ^/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
사전에

감사합니다! account_area에서

답변

4

사용 anynymous 지침 :

언급 할 가치가
account_area: 
     pattern: ^/ 
     anonymous: ~ 
+0

나는 익명의'사용했습니다 : TRUE ' – Frido

10

여기에 가장 좋은 방법은 로그인 페이지 access_control와 함께 하나의 방화벽을 사용하는 것입니다. 왜? 로그인 한 사용자가/로그인 페이지에 액세스하려고하면 어떻게합니까? 컨트롤러가 별도로 설치된 보안 시스템이므로 사용자가 기본 방화벽에서는 인증되지만 로그인 방화벽에서는 인증되지 않으므로 인증 된 사용자인지 리디렉션되는지 여부는 컨트롤러에서 확인할 수 없습니다.

security: 
    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: true 
      anonymous: ~ 
     secured_area: 
      pattern: ^/ 
      anonymous: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 
       always_use_default_target_path: true 
       default_target_path:/
      logout: 
       path: /logout 
       target:/
    providers: 
     main: 
      entity: { class: Core\UserBundle\Entity\User, property: username } 
    access_control: 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin, roles: ROLE_SUPERADMIN } 
     - { path: ^/user, roles: ROLE_USER } 
     - { path: ^/, roles: IS_AUTHENTICATED_FULLY } 
+1

브라보

여기에 나를 위해 좋은 작동 security.yml입니다! 이것은 내가 생각하고있는 것이고 나는 확인을 얻는다! – gremo

+0

내 보안 영역에 "익명 : ~"을 추가하면이 작업을 수행하는 데 필요한 것이있었습니다. 감사합니다. – Jessica