On Dec 4, 2010, at 10:29 AM, Brian M wrote:
> 
> Jonathan,
> 
> How would you like to see this behave? Perhaps URL('index',args=[],
> vars={}, hash_key='xxx', hash=['args','vars']) and then
> URL.verify(hmac_key='xxx', hash=['args', 'vars]) so that you could
> choose which portions of the URL to sign and/or verify with hash=None
> triggering the original behavior of hashing both? Since this hasn't
> made it into a stable release yet I assume changes can be made still
> without worrying about breaking backwards compatibility.

That would work. I'm not sure if it needs to be that general; is there a use 
case for hashing vars but not args? If not, then a boolean would be adequate 
(hash_vars=True by default; the caller sets it False if desired).

Another generalization would be to pass a set of var keys to be included in the 
hash: hash_vars=set('name1', 'name2'). The use case would be a form, again (or 
Ajax, perhaps), where the included vars would be page state kept in hidden or 
read-only elements of the form.

So:     hash_vars=True  (default; hash all vars)
        hash_vars=False (don't hash any vars)
        hash_vars=set(...)      (hash only the vars named in the set)

The set needn't be a set per se, I suppose. Any iterable (well, not a string) 
would suffice.

> 
> ~Brian
> 
> On Dec 3, 11:13 am, Jonathan Lundell <jlund...@pobox.com> wrote:
>> On Dec 3, 2010, at 9:01 AM, mdipierro wrote:
>> 
>> 
>> 
>>> New feature in trunk:
>> 
>>> URL('index',args=[],vars={},hash_key='xxx')
>> 
>>> the URL will have a _signature attached. The associated controller can
>>> check for the signature with
>> 
>>> def index():
>>>     if not URL.verify(hmac_key='xxx'): ......
>>>     ...
>> 
>>> Please test it. In particular we need to test the workflow and see if
>>> we are missing something useful or doing something wrong.
>> 
>> Perhaps there should be an option to exclude the query string from the hash 
>> calculation. Otherwise we can't sign URLs that are form actions (or that are 
>> similarly used with Ajax).


Reply via email to