2011-12-15 264 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是