1

我有一个使用 FOSUserBundle 的 symfony 2.1 项目。捆绑包已正确安装。所有功能都使用默认的 /login 表单正常工作。

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

我试过了:

更改security.yml - login_path

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

access_control

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 充当登录页面。

4

2 回答 2

2

你有一个重定向循环。

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_ANONYMOUSLY(第 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 }
于 2013-01-15T17:02:56.030 回答
0

我认为你应该改变你的 security.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

希望这有帮助!

于 2013-07-02T11:05:34.357 回答