代码之家  ›  专栏  ›  技术社区  ›  Yamen Nassif

Symfony路线不再工作

  •  0
  • Yamen Nassif  · 技术社区  · 6 年前

    我有一个应用程序已经开发了一段时间,它可以完全正常登录并创建新的用户功能,但由于我试图切换用户(以更改角色),我无法再次登录。在对代码进行深入研究后,我发现登录后会抛出302代码状态,因此日志记录过程停止工作。

    我的SecurityController中有以下代码:

    return new RedirectResponse('/sys-admin/');
    

    并将该代码更改为:

    return $this->forward('AppBundle:SystemAdmin:index', array());
    

    让它工作,我会再次登录,但现在我的所有路线都停止工作了,我的意思是在我的视图中有如下按钮:

    <a href="{{ path('system_admin_client') }}"
                               class="btn pmd-btn-flat btn-default">Go!</a>
    

    当我单击按钮时,我已注销并重定向到登录页面,在任何浏览器的网络选项卡中,我都可以看到路由 sys-admin/client 自我注销后,状态代码为302。

    跑步 bin/console debug:router 显示我的所有路线都在那里,对于本例,正在运行 bin/console router:match /sys-admin/client 还向我显示了与控制器的匹配以及所有信息。

    我的路线是这样的:

    app_system_admin:
        prefix: /sys-admin
        resource: "@AppBundle/Resources/config/routing/sys_admin.yml"
    

    系统管理。yml公司

    system_admin_client:
        path: /client
        defaults: { _controller: AppBundle:SystemAdmin:index}
    

    我不知道出了什么问题!任何帮助都将不胜感激。谢谢

    更多信息:我正在使用Symfony 4.0.4,如果我尝试在任何路由上进行转发,它都会工作,但重定向不起作用。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Philippe-B-    6 年前

    302 HTTP状态码用于重定向,这不是错误。 这很正常,因为你返回了 RedirectResponse

    在我看来,问题不在于重定向。 您应该将其放回原处,并检查用户切换功能(或用户本身)。 如果这样做,请不要硬编码重定向路径。使用Symfony方法生成它,如:

    return $this->redirectToRoute('system_admin_index');
    
        2
  •  0
  •   Yamen Nassif    6 年前

    经过大量调查,我找到了解决方案。我正在使用docker使整个应用程序运行,出于某种原因,php fpm日志没有显示错误,但错误是php会话被中断,因为用户没有访问权限,在docker上更改为root user修复了此问题,因为root有访问权限。