2011-12-15 270 views
2

我使用symfony2和FOS UserBundle。Symfony2 + FOSUSerBundle:重定向不起作用

我遵循了https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md的FOSUSerBundle文檔,但我不重定向如果我要到指定的頁面。

我的意思是,當我輸入http/myapp/myspecificPage/toto而不是,我必須被重定向到http/myapp/login。即使我沒有登錄到我的應用程序。

我的NamespaceLoginBundle擴展到FOSUser。

這裏我的文件routing.yml

login: 
    pattern: /login 
    defaults: { _controller: NamespaceLoginBundle:Welcome:login } 

login_check: 
    pattern: /login_check  
    defaults: { _controller: NamespaceLoginBundle:Welcome:checkUser } 

fos_user_security: 
    resource: "@FOSUserBundle/Resources/config/routing/security.xml" 
    prefix:/

fos_user_profile: 
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml" 
    prefix: /profile 

fos_user_register: 
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml" 
    prefix: /register 

fos_user_resetting: 
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml" 
    prefix: /resetting 

fos_user_change_password: 
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml" 
    prefix: /change-password 

和security.yml

security: 
    providers: 
     fos_userbundle: 
      id: fos_user.user_manager 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
      logout:  true 
      anonymous: true 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    access_control: 
     # Liste des pages accessibles à tous les utilisateurs (ne pas toucher) 
     - { path: ^/_wdt/, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/_profiler/, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/js/, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/css/, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resseting$, role: IS_AUTHENTICATED_ANONYMOUSLY } 

     # PAGES ACCESSIBLES AUX ADMINISTRATEURS 
     - { path: ^/admin/, role: ROLE_ADMIN } 

     # PAGES ACCESSIBLES AUX UTILISATEURS CONNECTES 
     - { path: ^/change-password, role: ROLE_USER } 

     # PAGES ACCESSIBLES A TOUS 
     - { path: ^.*, role: IS_AUTHENTICATED_ANONYMOUSLY } 

    acl: 
     connection: default 

我已經嘗試了一些修改,但不起作用。

請任何幫助。

再見

山姆

+0

您允許訪問的所有頁面,除了管理和更改密碼選擇「記住我」上的最後一個登錄用戶由`^ *作用:IS_AUTHENTICATED_ANONYMOUSLY`規則.. – meze 2011-12-15 09:03:51

+0

即使我刪除 - {路徑:^ *作用:IS_AUTHENTICATED_ANONYMOUSLY}這是行不通的 – Sam 2011-12-15 09:09:21

回答

0

編輯:第一時間,錯誤的答案X)

你需要設置你的access_role以允許匿名用戶只有在登錄頁上:

access_control: 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: ROLE_USER } 
1

您需要指定角色

- { path: ^/.*, role: [IS_AUTHENTICATED_REMEMBERED, IS_AUTHENTICATED_FULLY] }

其中:

IS_AUTHENTICATED_FULLY通過輸入登錄名和密碼驗證,IS_AUTHENTICATED_REMEMBERED是