Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如何设置à;安全侦听器的优先级?_Symfony_Symfony Components - Fatal编程技术网

Symfony 如何设置à;安全侦听器的优先级?

Symfony 如何设置à;安全侦听器的优先级?,symfony,symfony-components,Symfony,Symfony Components,我的门户上有一个Sso身份验证,如果请求中存在特定的头,它将绕过登录表单 当我尝试取消用户权限时,Symfony的上下文侦听器会找到该用户并将其加载到安全上下文中,然后我的Sso侦听器会检测头并覆盖安全令牌中的令牌。因此,帝国主义失败了 我有两个想法,但我不知道是否可行: 有没有办法为这些安全侦听器配置优先级 是否有一种方法可以从Firewall\ListernerInterface的handle方法的事件中检测是否已在安全上下文中设置了经过身份验证的令牌 以下是一个使用GetSubscrib

我的门户上有一个Sso身份验证,如果请求中存在特定的头,它将绕过登录表单

当我尝试取消用户权限时,Symfony的上下文侦听器会找到该用户并将其加载到安全上下文中,然后我的Sso侦听器会检测头并覆盖安全令牌中的令牌。因此,帝国主义失败了

我有两个想法,但我不知道是否可行:

  • 有没有办法为这些安全侦听器配置优先级
  • 是否有一种方法可以从Firewall\ListernerInterface的handle方法的事件中检测是否已在安全上下文中设置了经过身份验证的令牌

    • 以下是一个使用GetSubscribedEvents设置优先级的侦听器示例:

      class ModelEventListener extends ContainerAware implements EventSubscriberInterface
      {
          const ControllerRoleEventListenerPriority  = -1100;
          const ControllerModelEventListenerPriority = -1900;
          const ControllerFormEventListenerPriority  = -1910;
      
          const ViewEventListenerPriority = -1900;
      
          public static function getSubscribedEvents()
          {
              return array(
                  KernelEvents::CONTROLLER => array(
                      array('onControllerRole',  self::ControllerRoleEventListenerPriority),
                      array('onControllerModel', self::ControllerModelEventListenerPriority),
                      array('onControllerForm',  self::ControllerFormEventListenerPriority),
                  ),
                  KernelEvents::VIEW => array(
                      array('onView', self::ViewEventListenerPriority),
                  ),
              );
          }
      
      您还可以在services.yml文件中设置优先级:

      最后,以下是一些框架服务的优先级:


      不确定安全侦听器优先级记录在何处。他们一定在附近什么地方。您可以随时查看安全包。

      虽然这些优先级可以工作,但它们应该在-255和255之间,就像文档所说的那样。我想我在创建这些侦听器时忽略了这一点。哦,好吧。
      services:
        kernel.listener.your_listener_name:
          class: AppBundle\EventListener\AcmeExceptionListener
          tags:
          - 
            name: kernel.event_listener
            event: kernel.exception
            method: onKernelException
            priority: 666