限制 FosUserBundle 中的注册路径

Restrict register path in FosUserBundle

我在我的 Symfony 应用程序中使用 fosuserBundle 在同一页面上使用登录和注册(我的结构与 相同)。一切正常,没有任何问题。但现在如果我转到 /register url,我正在呈现注册表单。如果可能的话,我希望用户只能访问登录模板中的注册表单。

我想过不允许获取请求注册路径,但我不确定这是不是正确的方法或者是否有其他更好的方法来实现它

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

您可以访问 /register 因为您像这样导入了所有 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

registration.xml 路由文件是必需的,因为它有路由,注册后会将您的用户保存在数据库中,因此您不能真正删除它的导入

您可以通过在导入 FOSUserBundle 路由之前定义一个路径为 /register 的路由来解决这个问题,并在用户转到 /register[= 时重定向到您的(登录和注册)页面25=] url Symfony 将开始在 **app/config/routing.yml* 文件中寻找匹配项,并将 return 它找到的第一个匹配项,这将是您新定义的路由,而不是从 FOSUserBundle

注册路由

这不是一个真正的解决方案,它更像是一个 hack,我在我的一个项目中遇到了同样的问题并且它工作得很好

希望对您有所帮助