根据角色限制对登录symfony的访问

时间:2017-02-10 22:56:56

标签: 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

1 个答案:

答案 0 :(得分:3)

那是因为管理员还有一个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'不是'acceuil';)

相关问题