在我的Symfony应用程序中,我正在使用NodeJS& socket.io用于构建聊天功能并发送实时通知。为此,我使用Redis以JSON格式存储会话,以便可以在Javascript中轻松解析。
ProductData = new ObservableCollection<object>(SomethingThatReturnsClassAList());
问题是会话未正确编码,尤其是用户信息(身份验证部分)。
Symfony存储会话:
.border {
border: solid 1px;
border-color: inherit !important;
}
.border-none {
border: none !important;
}
JSON编码会话:
public function read($session_id) {
$tmp = $_SESSION;
$_SESSION = json_decode($this->client->get(self::PREFIX . $session_id), true);
if (isset($_SESSION) && !empty($_SESSION) && $_SESSION != null) {
$encoded_data = session_encode();
$_SESSION = $tmp;
return $encoded_data;
}
return '';
}
public function write($session_id, $session_data) {
$tmp = $_SESSION;
session_decode($session_data);
$decoded_data = $_SESSION;
$_SESSION = $tmp;
$this->client->setex(self::PREFIX . $session_id, $this->ttl, json_encode($decoded_data));
return true;
}
Symfony不使用PHP内置存储机制吗?我在这里做错了什么?
非常感谢任何帮助。
答案 0 :(得分:0)
在会话中存储更简单的方法:在您的客户端实体中实现\ Serializable然后编写序列化和反序列化函数示例:
function focusInputelement(id) {
window.setTimeout(() => {
document.getElementById(id).focus();
}, 500);
}
在此之后你几乎可以在任何地方使用它
class Client implements \Serializable{
public function serialize()
{
return serialize([
$this->id,
$this->name,
$this->color
]);
}
public function unserialize($serialized)
{
list (
$this->id,
$this->name,
$this->color
) = unserialize($serialized);
}}
添加您想要序列化和反序列化函数的任何其他必填字段