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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |