Symfony2.1/FOSUserBundle -将登录表单路由更改为主页路由(路径:/)


Symfony2.1/FOSUserBundle - change the login form route to the homepage route (path: /)

我有一个使用FOSUserBundle的symfony 2.1项目。bundle已经正确安装。使用默认/登录表单,所有功能都可以正常工作。

但是现在我想改变登录表单路由与主页(路径:/)相同。

我试着:

更改安全性。yml - login_path:

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            login_path: /
        logout:       true
        anonymous:    true

access_control to:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }        
    - { path: ^/*, role: ROLE_USER }
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }

当我尝试访问主页时,它会进入无限重定向(我假设)

页面没有正确重定向Firefox检测到服务器正在以某种方式重定向此地址的请求从未完成。

也无法在FOSUserBundle文档中找到任何解决此行为的方法。

简而言之:我希望first_page作为登录页面。

你有一个重定向循环。

access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }    #1
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }  #2
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } #3
- { path: ^/admin/, role: ROLE_ADMIN }                      #4
- { path: ^/*, role: ROLE_USER }                            #5
- { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }          #6

这是因为首先,你在#5中告诉访问控制需要ROLE_USER之前,你告诉它还需要 is_authenticated_anonymous (第5条和第6条规则都匹配)

访问控制是顺序敏感的,规则按照定义的顺序应用,试试:

access_control:
- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY } # NOTE THE $
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }        
- { path: ^/*, role: ROLE_USER }

我移动了规则

- { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }

移到开头,以便与

之前匹配
- { path: ^/*, role: ROLE_USER }

我认为你应该改变你的安全。yml:login_path: /login_path: /login

和access_control:

{ path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }    #1
{ path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }  #2
{ path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } #3
{ path: ^/admin/, role: ROLE_ADMIN }                      #4