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

问题描述 投票:1回答:1

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

symfony
1个回答
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'不是'accueil';)

© www.soinside.com 2019 - 2024. All rights reserved.