【问题标题】:Symfony - Two same routes with different access controlSymfony - 具有不同访问控制的两条相同路线
【发布时间】:2020-06-15 07:17:40
【问题描述】:

我有一个索引页面,对于经过身份验证的用户和未经身份验证的用户来说看起来完全不同。是否可以使用相同的路由路径(“/”)创建两个单独的控制器,但一个只提供给登录的用户,另一个只提供给访客?

使用:

  • Symfony 5
  • PHP 7.2

【问题讨论】:

    标签: symfony authentication controller routes


    【解决方案1】:

    在任何地方都不可能拥有两条相同的路线(除非它们允许使用不同的方法)。根据您的其他项目要求,您可以创建一个服务,根据用户身份验证加载不同的视图(如果需要,使用不同的数据)。对于一个更简单的示例,您可以检查用户是否在控制器索引函数中登录,并在每种情况下返回不同的响应。

    【讨论】:

    • 是的,我个人很可能只是在控制器中检查并提供不同的视图。
    【解决方案2】:

    您可以做的是引用两个不同的方法,它们返回一个响应,并从您的路由方法返回该响应。

    /**
     * @Route("/")
     * @return Response
     */
    public function index(): Response
    {
        if (/*user is logged logic*/) {
            return $this->indexLogged();
        } else {
            return $this->indexAnonymous();
        }
    }
    
    private function indexLogged(): Response
    {
        return new Response();
    }
    
    private function indexAnonymous(): Response
    {
        return new Response();
    }
    

    indexLogged 和 indexAnonymous 是公共的还是私有的,是否有路由取决于您真正想要什么,但这将允许您拥有更短的功能,只需要每个功能。

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 2017-07-09
      相关资源
      最近更新 更多