Symfony 2:如果用户具有特定角色,则将用户重定向到页面 [英] Symfony 2 : Redirect a user to a page if he has a specific role

查看:40
本文介绍了Symfony 2:如果用户具有特定角色,则将用户重定向到页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个小问题.我希望用户在我网站上的任何位置,如果他有ROLE_DEGRADE"角色,他就会被重定向到特定页面.

I have a little question. I want that wherever is the user on my website, if he have the role "ROLE_DEGRADE", he is redirected on a specific page.

我该怎么做,我必须使用防火墙?我不想将用户重定向到表单登录,只是重定向到一个简单的页面.我希望在我的网站上随处可见,不要在我的所有控制器中随处放置如果角色降级..."...

How I can do that, I have to use firewall ? I don't want to redirect the user to a form login, just to a simple page. I want that everywhere on my website, without put a "if role degrade..." everywhere, in all my controllers...

感谢您的帮助;)

推荐答案

这样的事情应该可以...

Something like this should do it ...

创建一个新的监听器:

class AccessListener
{
    private$security;
    private $router;

    public function __construct($security, $router)
    {
        $this->security = $security;
        $this->router = $router;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        if ($this->security->isGranted('ROLE_DEGRADE')) {
           $url = $this->router->generate('<route name>');
           $event->setResponse(new RedirectResponse($url));
        }
    }
}

将其添加到您的 services.yml :

services:
  access_listener:
    class: AcmeDemoBundleListenerAccessListener
    arguments: [ @security.context, @router ]
    tags:
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

文档:

这篇关于Symfony 2:如果用户具有特定角色,则将用户重定向到页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆