【发布时间】:2017-05-07 09:12:49
【问题描述】:
我有一个带有路由/admin 的管理面板。当我尝试与不是管理员的用户一起加入 /admin 路由时,它会引发以下异常:
表达式“has_role('ROLE_SUPER_ADMIN')”拒绝访问。
没关系,但如果用户没有ROLE_SUPER_ADMIN 角色,我想重定向。我尝试了几件事,但没有成功。这是我在AdminController 中的函数:
/**
* @Security("has_role('ROLE_SUPER_ADMIN')")
* @Route("/admin", name="admin")
*/
public function adminPageAction()
{
if ($this->isGranted('ROLE_SUPER_ADMIN')) {
return $this->render('admin.panel.html.twig/admin.panel.html.twig');
}
return $this->redirectToRoute('homepage');
}
【问题讨论】:
-
为什么要重定向无法访问保留页面的用户?未经授权的用户甚至不应该知道该页面的存在,如果您在不提供任何有关“为什么”的信息的情况下重定向他,那么用户体验会多么糟糕。此解决方案的第一个缺点是,如果您真的想要这种行为,则必须将相同的代码放在任何控制器方法中。