根据角色限制对登录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 登录表单根据用户角色重定向

如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器

如何使用spring security根据角色限制对html页面的访问?

根据用户类型限制对页面的访问

为用户动态添加角色

Keycloak:用户基于角色的客户端登录访问限制