在 Symfony 中,可以通过在 security.yml
文件中添加 invalidate_session: false
来避免 session 在注销时被破坏。
遗憾的是,这在 Silex 中不起作用。在 Silex 中有一个 EventListener SessionLogoutHandler
调用:
public function logout(Request $request, Response $response, TokenInterface $token)
{
$request->getSession()->invalidate();
}
此 EventListener 将添加到 SecurityServiceProvider
中:
$listener->addHandler(new SessionLogoutHandler());
我发现不可能不添加或删除此处理程序...还是我遗漏了什么?
感谢您的回答。
[更新]
在 https://github.com/silexphp/Silex/pull/916 查看我的拉取请求
最佳答案
作为短期解决方案,您可以使用默认情况下使用的完全相同的代码覆盖 $app['security.authentication_listener.logout._proto']
,除了注册您要注册的事件监听器有问题。
对于长期解决方案(如果你想出了一个可行的方法),你可以在 github 上 fork silex,添加一个可选择关闭它的方法,然后发送一个 pull request,这样其他人也可以从你的工作中受益:)
关于session - Silex SessionLogoutHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22147181/