Graham Dumpleton
grahamd at dscpl.com.au
Sun Oct 29 17:32:53 EST 2006
I have created a JIRA issue for this at: http://issues.apache.org/jira/browse/MODPYTHON-200 At the moment I have made changes (not committed), that would allow one to do: cookies = Cookie.get_cookies(req, Cookie.MarshalCookie, secret='secret', names=['marshal']) That is, when using Cookie.get_cookies(), one can optionally provide a keyword argument called 'names' which is a set/list of cookie names to decode. As a convenience, also have function for getting just one cookie. cookie = Cookie.get_cookie(req, 'marshal', Cookie.MarshalCookie, secret='secret') In this latter function, of cookie doesn't exist, it would return None. Does this sound reasonable? Graham Graham Dumpleton wrote .. > That would be understandable. The Cookie.get_cookies() expects you > to supply a class type and since there are multiple cookies stored of > differing types then the class type supplied may not be able to unpack > all of them. > > There probably needs to be a Cookie.get_cookie() so you can say that > you only want to get a specific cookie by name. Not sure I understand > why there isn't one already unless I am missing something. > > Besides writing your own version of Cookie.get_cookie(), the only other > way of getting around the problem for now is to set the 'path' attribute > of the cookies so that the cookies only get delivered to their respective > applications. But then, even that isn't necessarily going to help in all > cases because sessions use cookies as well, so it you want to use a > marshalled cookie in the same context as a session is used you are > similarly going to have a problem if the session is signed. > > Graham > > Clodoaldo Pinto Neto wrote .. > > If i set both a Signed and a Marshal cookie and try to retrieve the > > Marshal one using the Publisher i get this error: > > > > ---------------------------------------- > > Mod_python error: "PythonHandler mod_python.publisher" > > > > Traceback (most recent call last): > > > > File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line > > 299, in HandlerDispatch > > result = object(req) > > > > File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", > > line 213, in handler > > published = publish_object(req, object) > > > > File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", > > line 412, in publish_object > > return publish_object(req,util.apply_fs_data(object, req.form, req=req)) > > > > File "/usr/lib/python2.4/site-packages/mod_python/util.py", line > > 439, in apply_fs_data > > return object(**args) > > > > File "/var/www/html/teste/python/publisher/marshalcookie.py", line > > 10, in index > > marshal_cookies = Cookie.get_cookies( > > > > File "/usr/lib/python2.4/site-packages/mod_python/Cookie.py", line > > 350, in get_cookies > > return Class.parse(cookies, **kw) > > > > File "/usr/lib/python2.4/site-packages/mod_python/Cookie.py", line > > 252, in parse > > c.unmarshal(secret) > > > > File "/usr/lib/python2.4/site-packages/mod_python/Cookie.py", line > > 280, in unmarshal > > self.value = marshal.loads(base64.decodestring(self.value)) > > > > File "/usr/lib/python2.4/base64.py", line 319, in decodestring > > return binascii.a2b_base64(s) > > > > Error: Incorrect padding > > --------------------------------------------- > > > > If the Signed cookie is deleted then the Marshal cookie can be > > retrieved with no errors. > > > > The scripts that trigger the error are: > > > > Set and retrieve the Signed cookie: > > http://webpython.codepoint.net/mod_python_publisher_cookies_signed > > > > Set and retrieve the Marshal cookie: > > http://webpython.codepoint.net/mod_python_publisher_cookies_marshal > > > > I'm just building that tutorial. BTW i would appreciate to have it > > corrected by the experts. > > > > I tested in Firefox 1.5.0.7 and Opera 9.02. FC5, mod_python 3.2.8, Apache > > 2.2.2. > > > > Regards, Clodoaldo Pinto Neto > > _______________________________________________ > > Mod_python mailing list > > Mod_python at modpython.org > > http://mailman.modpython.org/mailman/listinfo/mod_python > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python
|