Symfony 不带前缀的用户包登录路径
我希望登录页面位于my.vendor.org/而不是my.vendor.org/login 我的安全。yml看起来像这样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:
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>