symfony - 访问 flashbag 表单 AbstractFormLoginAuthenticator
问题描述
Symfony 版本:5.1.8
使用表单验证器AbstractFormLoginAuthenticator
时,该方法onAuthenticationSuccess
输出重定向。在此重定向之后,我想为成功登录的用户显示一条成功消息。
对于这个用例来说,使用来自身份验证器的 flashbag 会很好,这就是我通过注入Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface
来实现的服务session.flash_bag
。结合:
$this->flashbag->set('login_successfull', 'message_login_form_valid');
有用。
但是在升级到 Symfony 5.1 之后,我发现了这种弃用:
User Deprecated: Since symfony/framework-bundle 5.1: The "session.flash_bag" service is deprecated, use "$session->getFlashBag()" instead.
我正在尝试通过使用来解决此弃用问题$flashbag = $request->getSession()->getBag('flash')
,但我无法使其工作,因为没有$flashbag
设置消息的方法(只有、getName
或getStorageKey
)。clear
initialize
我也尝试注入可用的自动连接session
服务,但它来自于SessionInterface
它不允许您以我上面提到的相同方式检索和设置 flashbag。
也许我没有正确看待事情,你有什么建议来解决这个用例吗?我虽然放弃了为此使用 flashbag 的想法,但我看不到重定向后传递信息的好方法?
解决方案
如果您查看 的$this->addFlash
方法,AbstractController
您会发现默认情况下用于添加新闪存消息的服务。所以你的代码应该是这样的:
$this->session->getFlashBag()->add($type, $message);
其中$this->session
属性是以下实例:Symfony\Component\HttpFoundation\Session\SessionInterface
推荐阅读
- c - About matrix operations
- python - Django + Gunicorn + Kubernetes: Website down few minutes on new deployment
- c# - after do... while loop Unhandled Exception: System.FormatException: Input string was not in a correct format
- reactjs - 将一些图像手动存储在 firebase 存储中,并在我的 react native 应用程序中使用
- php - Laravel中的积分排名,其中积分相等
- websocket - 什么时候使用 websockets 比使用消息代理(如 Kafka)更好?
- python - 比较numpy数组中的整行和列并删除选定的行和列
- haskell - 如何在 Haskell 中以多态方式为多种类型编写多个函数定义?
- r - 循环 data.frame 列以在 R 中生成虚拟变量
- gdb - 使用 QEMU 和 GDB 调试 xv6:无法解析名称:提供节点名或服务名,或未知