Thanks

On Mon, Feb 27, 2012 at 2:58 PM, Massimo Di Pierro <
[email protected]> wrote:

> I am treating this as a bug. now fixed in trunk.
>
> On Feb 27, 2:07 pm, Anthony <[email protected]> wrote:
> > In
> >
> > URL('adviewer', 'savesettings/location', user_signature=True)
> >
> > the URL() function sees function='savesettings/location' and args=None.
> > However, when a request is made to the URL generated by the above, the
> > function that verifies the signature sees function='savesettings' and
> > args='location'. The problem is, function='savesettings' and
> > args='location' does not generate the same signature as
> > function='savesettings/location' and args=None. The reason is that when
> > generating the signature, the extension is first added to the function
> > before concatenating the args, so when the signature is first generated,
> it
> > is a hash of a URL that includes "/savesettings/location.html", but when
> > verified, the signature is a hash of a URL that includes
> > "/savesettings.html/location". Therefore, the hashes won't match because
> > they are created from different strings.
> >
> > Is there any reason you are using the above rather than:
> >
> > URL('adviewer', 'savesettings', args='location', user_signature=True)
> >
> > which is really the correct way to use the URL() function? If you
> > explicitly specify "location" as the args argument to URL(), I think it
> > should work.
> >
> > Anthony
> >
> >
> >
> >
> >
> >
> >
> > On Monday, February 27, 2012 1:22:25 PM UTC-5, Detectedstealth wrote:
> >
> > > Ok it looks like the bug is related to:
> >
> > > URL('action/additional_parms', user_signature=True) if you have
> something
> > > in addition to the action @auth.requires_signature fails.
> >
> > > When using: FORM(_action=URL('adviewer','savesettings/location',
> > > user_signature=True)) or redirect(URL('payment/%s' %
> > > has_unpaid_orders.access_key, user_signature=True)) with
> > > @auth.requires_signature() on the action it fails with access denied.
> >
> > > On Wed, Feb 22, 2012 at 3:19 PM, Bruce Wade <[email protected]>
> wrote:
> >
> > >> When using user_signature=True in a form that action goes to another
> > >> method and that method has @auth.requires_signature I am getting
> access
> > >> denied, if I remove the @auth.requires_signature I still see the
> signature
> > >> but don't have the access denied message.
> >
> > >> FORM:
> > >> # adviewer.viewads();
> >
> > >> locationform=FORM(
> > >>         DIV(
> > >>             SELECT(countries_options,_id='by-country',_name='country',
> > >> _onchange="updateProvinces(this)", value=selected_country),
> > >>             _id='country_options', _class='filter-selects'
> > >>         ),
> > >>         DIV(
> > >>             SELECT(provinces_options,_id='by-province',
> > >> _name='province_state',_onchange="updateCities(this)",
> > >> value=selected_province),
> > >>             _id='province_options', _class='filter-selects'
> > >>         ),
> > >>         DIV(SELECT(
> > >>             cities_options,_id='by-province', _name='city',
> > >> value=selected_city),
> > >>             _id='city_options', _class='filter-selects'
> > >>         ),
> > >>         DIV(_class='clear'),
> > >>         INPUT(_type='submit', _value='Save', _class='filter-btn'),
> > >>         _name='locationform',
> > >>         _action=URL('adviewer','savesettings/location',
> > >> user_signature=True)
> > >>     )
> >
> > >> Capture Method:
> > >> # adviewer.savesettings()
> > >> // URL submitted to this method:
> > >>http://127.0.0.1:8000/zh/adviewer/savesettings/location?_signature=82.
> ..
> > >> @auth.requires_login()
> > >> @auth.requires_signature()  # If I remove this there is no access
> denied.
> > >> def savesettings():
> > >>     print request.vars
> > >>     print request.args(0)
> > >>     from youadAPI.adviewer_api import AdViewerEngine
> > >>     if request.args(0) == 'location':
> > >>         adviewer_engine.update_or_create_adviewer_settings(
> > >>             AdViewerEngine.location,
> > >>             dict(
> > >>                  country=request.vars['country'],
> > >>                  province=request.vars['province_state'],
> > >>                  city=request.vars['city']
> > >>             )
> > >>         )
> > >>     elif request.args(0) == 'language':
> > >>         adviewer_engine.update_or_create_adviewer_settings(
> > >>             AdViewerEngine.language,
> > >>             dict(
> > >>                 language = request.vars['language']
> > >>             )
> > >>         )
> > >>     elif request.args(0) == 'keywords':
> > >>         adviewer_engine.update_or_create_adviewer_settings(
> > >>             AdViewerEngine.keywords,
> > >>             dict(
> > >>                 keywords = request.vars['keywords']
> > >>             )
> > >>         )
> >
> > >> --
> > >> --
> > >> Regards,
> > >> Bruce Wade
> > >>http://ca.linkedin.com/in/brucelwade
> > >>http://www.wadecybertech.com
> > >>http://www.warplydesigned.com
> > >>http://www.fitnessfriendsfinder.com
> >
> > > --
> > > --
> > > Regards,
> > > Bruce Wade
> > >http://ca.linkedin.com/in/brucelwade
> > >http://www.wadecybertech.com
> > >http://www.warplydesigned.com
> > >http://www.fitnessfriendsfinder.com
>



-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.warplydesigned.com
http://www.fitnessfriendsfinder.com

Reply via email to