Symfony 限制FosUserBundle中的寄存器路径

Symfony 限制FosUserBundle中的寄存器路径,symfony,post,fosuserbundle,Symfony,Post,Fosuserbundle,在我的Symfony应用程序中,我正在使用fosuserBundle在同一页面上登录和注册(我的结构与fosuserBundle相同。所有这些都可以完美地工作,没有任何问题。但是现在,如果我转到/register url,我将获得呈现的注册表单。如果可能,我希望用户只能够访问登录模板中的注册表单 我考虑过不允许get请求注册路径,但我不确定这是正确的方法还是有其他更好的方法来实现它 如果有人能帮我解答我的疑问,我将不胜感激。您可以访问/注册,因为您导入了所有FOSUserBundle路线,就像这

在我的Symfony应用程序中,我正在使用fosuserBundle在同一页面上登录和注册(我的结构与fosuserBundle相同。所有这些都可以完美地工作,没有任何问题。但是现在,如果我转到/register url,我将获得呈现的注册表单。如果可能,我希望用户只能够访问登录模板中的注册表单

我考虑过不允许get请求注册路径,但我不确定这是正确的方法还是有其他更好的方法来实现它


如果有人能帮我解答我的疑问,我将不胜感激。

您可以访问/注册,因为您导入了所有FOSUserBundle路线,就像这样

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

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: /profile
还是像这样

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

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: /profile
registration.xml路由文件是必需的,因为它具有在注册后将用户保存在数据库中的路由,因此您不能真正删除它

在导入FOSUserBundle路由之前,您可以通过使用path/register定义路由来解决此问题,并将重定向到您的(登录和注册)页面中,当用户转到/registerurl时,Symfony将开始在**app/config/routing.yml*文件中查找匹配项,并返回它找到的第一个匹配项,该匹配项将是您新定义的路由,而不是来自FOSUserBundle的注册路由

这不是一个真正的解决方案,更像是一个黑客,我在我的一个项目中遇到了同样的问题,而且效果很好


我希望这有助于

完美!我将使用此黑客,谢谢你的帮助!!