Question

Nécessité de lire les données de session Pylônes (lire, pas écrire à) dans Node.js

Une fois que je décode les base64, je suis parti avec une chaîne contenant un objet Python qui sérialisé, est une douleur pour analyser dans Node.js

Comment puis-je obtenir Beaker à serialize à la place JSON? Car il est beaucoup plus facile pour Node.js à manipuler.

Était-ce utile?

La solution

je devais regarder à l'intérieur bécher pour trouver ce que vous appelez « les chaînes sérialisé Python » sont conserves au vinaigre de python.

Je ne pense pas qu'il serait plus que quelques lignes pour le changer l'obtenir à utiliser JSON pour stocker le dict.

ici est un patch contre 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top