用户异常退出- symfony 2.3.32


Strange unexpected user logout - symfony 2.3.32

我真的尽了最大的努力来解决这个问题,但无济于事。所有关于SO的类似问题对我来说似乎都不容易理解。用户在刷新一次页面后退出,有时是两次……这种行为没有逻辑可言。

我对日志文件不熟悉,这是我第一次阅读它们,我希望我能在数百行中给你适当的行。顺便说一下,这些行是关于一些内部Symfony的东西,我仍然没有得到:

[2015-10-18 20:48:18]请求。信息:匹配路由"user_admin_page"(参数:"_controller":控制器"成员'包' ManagementBundle ' ' AdminController:: indexAction","_route": "user_admin_page") [] []

.......

[2015-10-18 20:48:18] event.事件。"通知事件"内核。请求"侦听器"Symfony组件' '安全' Http '防火墙::onKernelRequest"。[][][2015-10-18 20:48:19]安全。INFO:已填充的安全上下文一个匿名令牌[][] [2015-10-18 20:48:19] event.事件。调试:通知事件"kernel.exception"对侦听器"Symfony '防火墙组件Http ' '安全' ' ExceptionListener:: onKernelException"。[] []

[2015-10-18 20:48:19]安全。DEBUG:访问被拒绝(用户不是)完全认证)社区"C: ' xampp '根' '供应商' symfony ' symfony ' src ' symfony '防火墙组件Http ' '安全' ' AccessListener.php"在第70行;重定向到认证入口点[][]

[2015-10-18 20:48:19]安全。DEBUG:调用身份验证项点[][]

[2015-10-18 20:48:19] event.事件。调试:侦听器"Symfony '防火墙组件Http ' '安全' ' ExceptionListener:: onKernelException"停止事件"kernel.exception"的传播。[] []

……[2015-10-18 20:48:19] event.事件。"通知事件"内核。反应"侦听器"Symfony '防火墙组件Http ' '安全' ' ContextListener:: onKernelResponse"。[] []

[2015-10-18 20:48:19]安全。类中写入SecurityContext会话[][]

非常感谢你的帮助。

感谢大家抽出时间来讨论这个问题。显然,下面是原因和可能的解决方案:

在我的网站中,我使用了Ratchet,这是一个通过websockets提供实时连接的PHP库。为了将web会话附加到websocket连接,我使用了棘轮会话提供程序:

SessionProvider将为每个会话附加一个Symfony2会话对象传入的Connection对象,该对象将为您提供对来自您网站的会话数据。SessionProvider不能工作任何Native*会话处理程序。建议使用choose以下Symfony自定义保存处理器之一:

MemcacheSessionHandlerMemcachedSessionHandlerPdoSessionHandler(开发中)RedisSessionHandler

我使用了PdoSessionHandler,这在我的配置中带来了变化:

framework:
    ...
    session:
      handler_id: ~

:

framework:
    ...
    session:
      handler_id: session.handler.pdo # old configuration that caused the

切换回旧的情况消除了这个问题。那么可能的解决方案:

  • 使用另一种方法存储会话数据。
  • 从Symfony 2.3升级到Symfony 2.6,根据docs, PdoSessionHandler增加了许多增强功能,这需要额外的代码更改。
  • 保持相同的代码,升级Symfony2,但将处理程序名称改为legacypdosessionhandler。

更多细节:

http://symfony.com/doc/current/cookbook/doctrine/pdo_session_storage.htmlhttp://socketo.me/docs/sessions