【发布时间】:2023-03-31 11:03:01
【问题描述】:
我在我的 CakePHP 3 应用程序中使用 Database Sessions,因为我希望在网站的管理面板中显示在线员工(用户)列表。
我想检索登录的员工(用户)的会话信息(至少是用户 ID),以便他们的详细信息可以显示在列表中。 sessions 表的 data 列包含会话信息,但我不知道如何从中提取特定信息。我想从中获得 Auth 信息。它包含以某种方式与会话密钥连接的序列化数据。
数据样本
配置|a:1:{s:4:"time";i:1457067440;}Flash|a:1:{s:4:"auth";a:1:{i:0;a:4 :{s:7:"message";s:52:"Woopsie, 您无权访问该 area.";s:3:"key";s:4:"auth";s:7:"element";s:13:"Flash/default";s:6:"params";a:1: {s:5:"class";s:5:"error";}}}}registrar_id|i:2;registrar_name|s:10:"Gaurav Makhecha";unread_site_updates_ids|s:1:"1";
谁能指导我如何以最佳方式实现这一目标。
【问题讨论】:
-
你的意思是这样的吗? stackoverflow.com/questions/35450008/…(披露:我写了答案)
-
会话数据由 PHP 序列化。尝试使用session_decode 来反序列化它。也就是说,在会话表中有记录并不一定意味着用户实际上已登录。他可能刚刚关闭了浏览器窗口,并且在运行垃圾收集之前不会清除会话记录。
-
谷歌搜索也想出了gist.github.com/phred/1201412
-
@Sevvlor 谢谢你的回答。我已经阅读过,但使用数据库会话会给我带来更好的性能。
-
谢谢@ADmad。是的,我知道这一点。我试过但找不到任何解决方案来获取登录用户的准确(实时)数据。有什么建议吗?
标签: session cakephp cakephp-3.0