【发布时间】:2020-06-15 07:17:40
【问题描述】:
我有一个索引页面,对于经过身份验证的用户和未经身份验证的用户来说看起来完全不同。是否可以使用相同的路由路径(“/”)创建两个单独的控制器,但一个只提供给登录的用户,另一个只提供给访客?
使用:
- Symfony 5
- PHP 7.2
【问题讨论】:
标签: symfony authentication controller routes
我有一个索引页面,对于经过身份验证的用户和未经身份验证的用户来说看起来完全不同。是否可以使用相同的路由路径(“/”)创建两个单独的控制器,但一个只提供给登录的用户,另一个只提供给访客?
使用:
【问题讨论】:
标签: symfony authentication controller routes
在任何地方都不可能拥有两条相同的路线(除非它们允许使用不同的方法)。根据您的其他项目要求,您可以创建一个服务,根据用户身份验证加载不同的视图(如果需要,使用不同的数据)。对于一个更简单的示例,您可以检查用户是否在控制器索引函数中登录,并在每种情况下返回不同的响应。
【讨论】:
您可以做的是引用两个不同的方法,它们返回一个响应,并从您的路由方法返回该响应。
/**
* @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 是公共的还是私有的,是否有路由取决于您真正想要什么,但这将允许您拥有更短的功能,只需要每个功能。
【讨论】: