php - 在自定义 Symfony ErrorController 中获取当前用户
问题描述
我为 Symfony 5 实现了一个自定义错误控制器来自定义错误页面,效果很好。遗憾的是,在执行这个错误控制器时,symfony 的安全系统没有初始化。有没有办法手动触发安全系统登录当前用户?我使用新的基于身份验证器的安全系统和一个自定义身份验证器,它读取已经存在的会话。
我试图直接使用我的身份验证器来获取用户:
class ErrorController extends \Symfony\Component\HttpKernel\Controller\ErrorController {
public function __construct(
...
private AbstractAuthenticator $authenticator,
private RequestStack $requestStack,
...
) {
parent::__construct($kernel, $controller, $errorRenderer);
}
public function __invoke(\Throwable $exception): Response {
$request = $this->requestStack->getCurrentRequest();
$user = $this->authenticator->supports($request)
? $this->authenticator->authenticate($request)->getUser()
: null;
return parent::__invoke($exception); // TODO: Change the autogenerated stub
}
}
这可行,但下一步是将用户注入 symfony 安全系统,这不是一个好主意,因为我以非预期的方式使用(滥用)框架,并且它还绕过了配置中设置的身份验证器.
那么,目前有没有办法以它打算运行的方式运行 symfony 的安全系统?
解决方案
推荐阅读
- php - strrpos 耗尽了允许的内存大小
- google-calendar-api - 查找辅助日历
- ruby-on-rails - 无法为生产预编译资产 - rails/webpacker/react/redux
- php - 未捕获的类型错误:数据表
- twilio - Twilio 基于存储旧数据的小部件进行拆分
- java - 是否有任何类处理 RecyclerView ViewHolders 的数据绑定?
- html - 当固定宽度扩展以适应其内容时,相同宽度的其他 s 也会按比例扩展(使用 CSS)
- sql - 如何为新的服务器版本恢复数据库文件
- python - 为什么我的 For 循环乘以每个字符串
- sql-server - 使用条件格式填充文本框时,SSRS 出现错误。错误 BC30201