根据角色限制对登录symfony的访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据角色限制对登录symfony的访问相关的知识,希望对你有一定的参考价值。
我是第一次使用symfony,我想根据角色限制对已登录用户的/ login访问
这是我的securityController
class SecurityController extends BaseController
{
public function renderLogin(array $data)
{
if ($this->get('security.authorization_checker')->isGranted('ROLE_USER')) {
return $this->redirectToRoute('covoiturage_acceuil');
} else if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
return $this->redirectToRoute('admin_home');
}
return $this->render("CovoiturageBundle:User:login.html.twig", $data);
}
}
当我以用户身份登录时,一切都很好但是当我以管理员身份登录时,我被重定向到路线(covoiturage_acceuil
)
答案
这是因为管理员还有一个ROLE_USER。您可以更改条件的顺序以解决问题:
public function renderLogin(array $data)
{
if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
return $this->redirectToRoute('admin_home');} //verify first that it's not an admin
else if ($this->get('security.authorization_checker')->isGranted('ROLE_USER')) {
return $this->redirectToRoute('covoiturage_acceuil');}
return $this->render("CovoiturageBundle:User:login.html.twig", $data);
}
另外,在法语中,'accueil'不是'accueil';)
以上是关于根据角色限制对登录symfony的访问的主要内容,如果未能解决你的问题,请参考以下文章
如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器