2015-10-15 86 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/ABC它重定向我登錄。我究竟做錯了什麼?

+1

什麼是你的安全配置? – Federkun

+0

我更新了配置問題 – dontHaveName

回答

0

你應該改變anonymous: trueanonymous: ~

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); 
}