2015-10-15 2 views
3

У меня есть простое действие контроллера:Symfony маршрут перенаправления на странице входа в

/** 
* @Route("/abc", name="abc") 
*/ 
public function testAction($abc) 
{ 
    return new Response($abc); 
} 

security.yml:

security: 
    .. 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/abc$, role: IS_AUTHENTICATED_ANONYMOUSLY} 

Но когда я иду в URL/а перенаправляет меня войти. Что я делаю не так?

+1

, что ваша конфигурация безопасности? – Federkun

+0

Я обновил вопрос с помощью config – dontHaveName

ответ

0

Вы должны изменить anonymous: true к anonymous: ~

security: 
.. 

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 

firewalls: 
    main: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4 
     logout:  true 
     anonymous: ~ 
+1

Не могли бы вы объяснить, почему работает изменение значения 'anonymous' с' true' на '~'? Я совершенно новичок в symfony, я знаю, что '~' представляет значение null/nothing, но почему это не работает с 'true'? – Andy

1

Во-первых, вы должны использовать заполнитель в маршруте:

/** 
* @Route("/prefix_or_not/{abc}", name="your_route_name") 
*/ 
public function testAction($abc) 
{ 
    return new Response($abc); 
} 
Смежные вопросы