Pylônes & Beaker: JSON encodée Sessions
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.
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