我是第一次使用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';)