2016-02-15 3 views
1

Я пытаюсь установить базовый HTTP browser-based authentication для раздела моего приложения Symfony 2 под названием /secret.Настройка базовой проверки подлинности на основе HTTP-браузера в приложении Symfony 2 - аутентификация HTTP-аутентификации

Я бы хотел, чтобы страница /secret была общедоступной, но любая страница ниже /secret, такая как /secret/landing, была бы за брандмауэром SF2.

Когда я перехожу на /secret (или его любую дочернюю страницу), я получаю перенаправленную страницу моего приложения /login, и я не понимаю, почему?

security: 
    providers: 
     sylius_user_provider: 
      id: sylius.user_provider.name_or_email 
     in_memory: 
      memory: 
       users: 
        secret: 
         password: secret 
         roles: 'ROLE_SECRET' 

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

    firewalls: 
     main: 
      switch_user: { role: ROLE_ADMINISTRATION_ACCESS } 
      context:  user 
      pattern:  /.* 
      form_login: 
       provider: sylius_user_provider 
       login_path: /login 
       check_path: /login_check 
       failure_path: /login 
       default_target_path:/
       use_forward: false 
       use_referer: true 
      remember_me: 
       key: %sylius.secret% 
       name: APP_REMEMBER_ME 
       lifetime: 31536000 
       always_remember_me: true 
       remember_me_parameter: _remember_me 
      oauth: 
       resource_owners: 
        facebook: "/login/check-facebook" 
        google: "/login/check-google" 
        amazon: "/login/check-amazon" 
       login_path: /login 
       failure_path: /login 
       oauth_user_provider: 
        service: sylius.oauth.user_provider 
      logout: true 
      anonymous: true 

     secret: 
      pattern: ^/secret/.* 
      http_basic: ~ 
      provider: in_memory 
      context: secret 

    access_control: 
     - { path: ^/secret/.*, roles: ROLE_SECRET } 

ответ

0

В случае, если он поможет кому-то в будущем, это то, что я сделал в security.yml:

firewalls: 
    secret: 
     pattern: ^/secret/$ 
     anonymous: true 

    secret_secured: 
     pattern: ^/secret/.*$ 
     http_basic: ~ 
     provider: in_memory 
     context: secret 


access_control: 
    - { path: ^/secret, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/secret/.*, roles: ROLE_SECRET } 
2

попробуйте добавить к контролю доступа

- { path: ^/secret, roles: IS_AUTHENTICATED_ANONYMOUSLY}