提取序列化的用户会话数据

时间:2015-11-14 08:19:44

标签: javascript mysql node.js symfony-1.4

我有一个symfony 1.4应用程序,我刚刚更改为将会话数据保存在mysql数据库的会话表中。

以下是序列化的mysql表session_data字段的示例。

symfony/user/sfUser/lastRequest|i:1447469750;
symfony/user/sfUser/authenticated|b:1;
symfony/user/sfUser/credentials|a:0:{}
symfony/user/sfUser/attributes|a:2:
{s:30:"symfony/user/sfUser/attributes";
a:3:{s:12:"current_page";
s:6:"splash";s:15:"logged_in_token";
s:31:"e9psz6e3iko4scsk0c4k4wckwk4k0k4";
s:25:"available_credits_session";
i:0;}s:19:"sfGuardSecurityUser";
a:1:{s:7:"user_id";s:1:"1";}}
symfony/user/sfUser/culture|s:2:"en";

我想从这个序列化数据中提取两条信息。

1)我正在使用的logged_in_token id,因此不会公开用户的真实用户ID。

2)user_id是实际的用户ID。

我需要此信息的原因是应用程序要求是它们一次只能有一个活动会话。

因此,如果会话表中有两个相同的用户ID,我将使用此信息注销或超时上一个会话。

它似乎是一种特定的#symfony方式"序列化数据。

如何在节点或javascript中提取此信息的任何想法将非常感谢

1 个答案:

答案 0 :(得分:1)

此数据序列化的方式并非特定于symfony,而是特定于php。根据{{​​1}}中的session.serialize_handler设置,php以不同方式序列化会话数据。该设置的默认值仅为php.ini,似乎在您的情况下使用。

我在php中使用以下方法来转义此编码 - 它输出带有数据的常规数组。这里没有php特定的内容,因此您可以轻松将其移植到javascript: (但最好的解决方案是在将数据保存到数据库之前进行“unes​​caping”,然后你就不需要在javascript端执行此操作了)

php