Symfony 不带前缀的用户包登录路径

Symfony 不带前缀的用户包登录路径,symfony,fosuserbundle,Symfony,Fosuserbundle,我希望登录页面位于my.vendor.org/而不是my.vendor.org/login 我的安全。yml看起来像这样 form_login: provider: fos_userbundle csrf_provider: security.csrf.token_manager check_path: /login_check login_path: /login default_target_path: /home use_forward:

我希望登录页面位于my.vendor.org/而不是my.vendor.org/login

我的安全。yml看起来像这样

form_login:
    provider: fos_userbundle
    csrf_provider: security.csrf.token_manager
    check_path: /login_check
    login_path: /login
    default_target_path:  /home
    use_forward:    false
    failure_path:   null
如果我将登录路径更改为:

 login_path: /
我将得到一个错误:

找不到用于获取的路由/


我该如何解决这个问题呢?

我本想把它作为一个评论,但却缺乏声誉

这是一种非常非常规的用户登录方式。请区分您希望在主页和任何其他页面上显示登录表单的位置,或者您是否希望主页实际上是登录页面

我更喜欢第一种方法,但你的问题的措辞是第二种

回答你的问题。确保应用程序主路由的路由文件未限制为方法[POST]。这条路线现在由FOSUserBundle管理,因此,如果有任何问题,您必须检查并可能在那里对其进行黑客攻击。因此,我建议您重新考虑您的方法

第一种方法非常简单,只需创建一个带有post参数的html表单到fos登录检查url,如下所示


..

我通过重写security.xml文件解决了这个问题。请注意,ID为fos\u user\u security\u login的路由具有path/而不是/login

<!-- app/Resources/FOSUserBundle/config/routing/security.xml -->
<?xml version="1.0" encoding="UTF-8" ?>

    <routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

        <route id="fos_user_security_login" path="/" methods="GET POST">
            <default key="_controller">FOSUserBundle:Security:login</default>
        </route>

        <route id="fos_user_security_check" path="/login_check" methods="POST">
            <default key="_controller">FOSUserBundle:Security:check</default>
        </route>

        <route id="fos_user_security_logout" path="/logout" methods="GET">
            <default key="_controller">FOSUserBundle:Security:logout</default>
        </route>

    </routes>

主页上有登录页的原因是web应用程序只是本地网络上的web应用程序。它不需要任何其他信息。
# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    globals:
        fos_csrf_provider: "@security.csrf.token_manager"
<!-- app/Resources/FOSUserBundle/config/routing/security.xml -->
<?xml version="1.0" encoding="UTF-8" ?>

    <routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

        <route id="fos_user_security_login" path="/" methods="GET POST">
            <default key="_controller">FOSUserBundle:Security:login</default>
        </route>

        <route id="fos_user_security_check" path="/login_check" methods="POST">
            <default key="_controller">FOSUserBundle:Security:check</default>
        </route>

        <route id="fos_user_security_logout" path="/logout" methods="GET">
            <default key="_controller">FOSUserBundle:Security:logout</default>
        </route>

    </routes>