加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 具有授权检查程序的Symfony kernel.response监听器

发布时间:2020-12-13 16:04:13 所属栏目:PHP教程 来源:网络整理
导读:我正在设置kernel.response事件,我想测试用户是否已登录. 这是我的代码: services.yml app.kernel.modal_injection: class: AppUserBundleEventListenerModalListener tags: - { name: kernel.event_listener,event: kernel.response } arguments: - @se
我正在设置kernel.response事件,我想测试用户是否已登录.

这是我的代码:

services.yml

app.kernel.modal_injection:
    class: AppUserBundleEventListenerModalListener
    tags:
        - { name: kernel.event_listener,event: kernel.response }
    arguments:
        - @security.authorization_checker

ModalListener.php

<?php
namespace AppUserBundleEventListener;

use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpKernelEventFilterResponseEvent;
use SymfonyComponentHttpKernelKernelEvents;
use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentSecurityCoreSecurity;
use SymfonyComponentSecurityCoreAuthorizationAuthorizationChecker;


class ConnectModalListener implements EventSubscriberInterface
{
    protected $securityChecker;

    public function __construct( AuthorizationChecker $securityChecker )
    {
        $this->securityChecker = $securityChecker;
    }

    public function onKernelResponse( FilterResponseEvent $event )
    {
        $response = $event->getResponse();
        $request = $event->getRequest();

        if ( !$event->isMasterRequest() ) {
            return;
        }
        if ( $request->isXmlHttpRequest() ) {
            return;
        }

        if ( $this->securityChecker->isGranted( 'IS_AUTHENTICATED_REMEMBERED' ) ) {
            return;
        }

        // CODE HERE


    }

    public static function getSubscribedEvents()
    {
        return array(
            KernelEvents::RESPONSE => array( 'onKernelResponse',0 ),);
    }
}

我的问题是,在检查用户IS_AUTHENTICATED_REMEMBER是否在我的页面上提供css和js文件时出现错误500(意味着没有js或css).有没有办法收费?最终在那些上过滤kernel.response事件?

解决方法

该标记在静态文件中为null,因此isGranted返回错误500.所以我必须在之前运行检查:

if ( $this->tokenStorage->getToken() !== null
        && $this->securityChecker->isGranted( 'IS_AUTHENTICATED_REMEMBERED' ) ) {
    return;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读