奇怪的意外用户注销 - symfony 2.3.32

时间:2015-10-18 19:05:28

标签: php symfony

我真的尽力解决这个问题但没有用。关于SO的所有类似问题似乎都不容易理解。用户在一次刷新页面后退出,有时在两次之后...这种行为没有逻辑。

我不熟悉日志文件,这是我第一次阅读它们,我希望我能在数百个中提供适当的线条。顺便说一下,这些内容是关于Symfony内部的一些内容,我仍然无法获得:

  

[2015-10-18 20:48:18] request.INFO:匹配路由" user_admin_page"   (参数:" _controller&#34 ;:   "成员\捆绑\ ManagementBundle \控制器\ AdminController ::的indexAction&#34 ;,   " _route":" user_admin_page")[] []

     

.......

     

[2015-10-18 20:48:18] event.DEBUG:通知事件" kernel.request"至   监听器" Symfony \ Component \ Security \ Http \ Firewall :: onKernelRequest"。   [] [] [2015-10-18 20:48:19] security.INFO:填充SecurityContext   匿名令牌[] []

     

[2015-10-18 20:48:19] event.DEBUG:通知事件" kernel.exception"   听众   " Symfony的\元器件\安全\ HTTP \防火墙\的ExceptionListener :: onKernelException&#34 ;.   [] []

     

[2015-10-18 20:48:19] security.DEBUG:拒绝访问(用户不是   完全认证)   " C:\ XAMPP \ htdocs中\社区\厂商\ symfony的\ symfony的\ SRC \的Symfony \元器件\安全\ HTTP \防火墙\ AccessListener.php"   在第70行;重定向到身份验证入口点[] []

     

[2015-10-18 20:48:19] security.DEBUG:调用身份验证条目   点[] []

     

[2015-10-18 20:48:19] event.DEBUG:听众   "的Symfony \分量\安全\ HTTP \防火墙\的ExceptionListener :: onKernelException"   停止传播事件" kernel.exception"。 [] []

     

...

     

[2015-10-18 20:48:19] event.DEBUG:通知事件" kernel.response"至   倾听者   " Symfony的\元器件\安全\ HTTP \防火墙\ ContextListener :: onKernelResponse&#34 ;.   [] []

     

[2015-10-18 20:48:19] security.DEBUG:写入SecurityContext   会话[] []

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

感谢大家为这个问题留出时间。显然,这是原因和可能的解决方案:

在我的网站上,我使用了Ratchet,它是一个PHP库,通过websockets提供实时连接。要将Web会话附加到websocket连接,我使用了Ratchet Session Provider:

  

SessionProvider会将Symfony2 Session对象附加到每个   传入的Connection对象,它将为您提供对它的只读访问权限   来自您网站的会话数据。 SessionProvider无法使用   任何Native *会话处理程序。建议您使用选择   以下Symfony自定义保存处理程序之一:

     

MemcacheSessionHandler   MemcachedSessionHandler   PdoSessionHandler   (在开发中)RedisSessionHandler

我使用了PdoSessionHandler,它改变了我的配置:

background-color

到:

background-clip: border-box;

切换回旧情况会消除此问题。那么可能的解决方案是:

  • 使用其他方法存储会话数据。
  • 从Symfony 2.3升级到Symfony 2.6,根据文档,PdoSessionHandler增加了许多增强功能,需要对代码进行额外更改。
  • 保留相同的代码,升级Symfony2,但将处理程序名称更改为LegacyPdoSessionHanlder。

进一步详情:

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

由于我的知识有限,我看不到其他解决方案。