Symfony4 内核事件执行重定向并依赖于用户
Symfony4 kernel event performing redirects and dependant on user
我想在每次请求时检查来自用户实体的内容,如果满足某些条件,我想执行重定向。试过这个:
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['watcher', 0],
]
];
}
public function watcher(GetResponseEvent $event)
{
if (!$event->isMasterRequest()) return;
/** @var Request $request */
$request = $event->getRequest();
echo "User: " . $request->getUser();
exit();
}
但是 $request->getUser() returns null
关于如何在内核事件中获取用户的任何建议?
$request->getUser()
不是 return 一个已经通过安全组件认证的用户对象,而是 HTTP 基本认证的用户名部分。
例如,如果您请求 http://username:password@example.com/,那么 $request->getUser()
将包含 "username"
。
要获取用户对象,您必须将 security.token_storage
服务注入您的事件订阅者,然后调用 $tokenStorage->getToken()->getUser()
。
请注意,getToken()
和getUser()
都可以returnnull
,因此您应该先检查两者。查看 the getUser()
implementation in Symfony's ControllerTrait
如何最好地做到这一点。
我想在每次请求时检查来自用户实体的内容,如果满足某些条件,我想执行重定向。试过这个:
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['watcher', 0],
]
];
}
public function watcher(GetResponseEvent $event)
{
if (!$event->isMasterRequest()) return;
/** @var Request $request */
$request = $event->getRequest();
echo "User: " . $request->getUser();
exit();
}
但是 $request->getUser() returns null
关于如何在内核事件中获取用户的任何建议?
$request->getUser()
不是 return 一个已经通过安全组件认证的用户对象,而是 HTTP 基本认证的用户名部分。
例如,如果您请求 http://username:password@example.com/,那么 $request->getUser()
将包含 "username"
。
要获取用户对象,您必须将 security.token_storage
服务注入您的事件订阅者,然后调用 $tokenStorage->getToken()->getUser()
。
请注意,getToken()
和getUser()
都可以returnnull
,因此您应该先检查两者。查看 the getUser()
implementation in Symfony's ControllerTrait
如何最好地做到这一点。