python - Pylons 和烧杯 : JSON Encoded Sessions

标签 python node.js pylons beaker

需要在 node.js 中读取 Pylons session 数据(只读,不写入)

解码 base64 后,我得到一个包含序列化 Python 对象的字符串,这在 node.js 中很难解析

如何让 Beaker 序列化为 JSON?因为 node.js 更容易处理。

最佳答案

我必须查看烧杯内部才能找到你所说的“Python 序列化字符串”是 python pickles。

我认为只需要几行就可以更改它以使用 json 来存储字典。

这是针对 https://bitbucket.org/bbangert/beaker/src/257f147861c8 的补丁:

diff -r 257f147861c8 beaker/session.py
--- a/beaker/session.py Mon Apr 18 11:38:53 2011 -0400
+++ b/beaker/session.py Sat Apr 30 14:19:12 2011 -0400
@@ -489,10 +489,10 @@
             nonce = b64encode(os.urandom(40))[:8]
             encrypt_key = crypto.generateCryptoKeys(self.encrypt_key,
                                              self.validate_key + nonce, 1)
-            data = util.pickle.dumps(self.copy(), 2)
+            data = util.json.dumps(self.copy())
             return nonce + b64encode(crypto.aesEncrypt(data, encrypt_key))
         else:
-            data = util.pickle.dumps(self.copy(), 2)
+            data = util.json.dumps(self.copy())
             return b64encode(data)

     def _decrypt_data(self):
@@ -504,10 +504,10 @@
                                              self.validate_key + nonce, 1)
             payload = b64decode(self.cookie[self.key].value[8:])
             data = crypto.aesDecrypt(payload, encrypt_key)
-            return util.pickle.loads(data)
+            return util.json.loads(data)
         else:
             data = b64decode(self.cookie[self.key].value)
-            return util.pickle.loads(data)
+            return util.json.loads(data)

     def save(self, accessed_only=False):
         """Saves the data for this session to persistent storage"""
diff -r 257f147861c8 beaker/util.py
--- a/beaker/util.py    Mon Apr 18 11:38:53 2011 -0400
+++ b/beaker/util.py    Sat Apr 30 14:19:12 2011 -0400
@@ -24,6 +24,11 @@
     import pickle
 else:
     import cPickle as pickle
+
+try:
+    import json
+except ImportError:
+    import simplejson as json

 from beaker.converters import asbool
 from beaker import exceptions

关于python - Pylons 和烧杯 : JSON Encoded Sessions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842738/

相关文章:

python - 如何打印变量中包含的 unicode 字符串的值

javascript - 如何找到 3 个或更多字符串的公共(public)部分?

node.js - DynamoDB - 使用 NodeJS 扫描和过滤 map

javascript - AngularJS 和 Node.js 与 ExpressJS 集成

python - 如何显示多张图片?

python - 如何使用 Beaker 将值保存到 Pyramid 中基于匿名 cookie 的 session

python - 我如何指定我创建的线性规划以使用 lpsolve 最大化或最小化规划

python - 如何将单个 pandas.DataFrame 行拆分为多个由空格分隔的列? Python

javascript - 如何在 Hapi.js 中封装请求生命周期事件?

python - Pylons:尝试服务时已使用的地址