Sorry, I did not mean to say I do not believe you. I meant to say that either I do not understand the question or something else is going on in your code.
I just did the following test: a new app def test1: return repr(dict(request.vars)) @auth.requires_login() def test2: return repr(dict(request.vars)) and then logged in and visited http://..../test1?hello=world http://..../test2?hello=world They both show {'hello': 'world'} If this does not work for you then there is a major problem but it is not in auth.requires_login(). Please tell us more about the OS, the Python version. Massimo On Sep 30, 2:55 pm, Dmitri Zagidulin <[email protected]> wrote: > Then how do I account for the fact that (while being logged in) if I > remove the requires_login() decorator, I can access the vars inside > the function, > but if I put back the decorator, I cannot see the vars? And, similarly > - if I don't have requires_login, args get loaded into the args > dictionary, but if I do have the requires_login, I get a 404 NOT > FOUND? > > If you don't believe me, can you at least point me in the right > direction (as far as explaining the workflow) -- since I'm not seeing > the vars in the logging statement in Augh > requires_login() > > decorator() -- where does requires_login get called from? Maybe I can > track down where the vars are being lost. > > Any suggestions appreciated. > > On Sep 30, 3:46 pm, mdipierro <[email protected]> wrote: > > > I am sure that is not the case. If you submit vars to a function that > > requires login and you are not login you are redirected to login (in > > this case vars are lost, args are not), but if you are logged in the > > function works normally and the vars are in request.vars. > > > On Sep 30, 2:28 pm, Dmitri Zagidulin <[email protected]> wrote: > > > > It looks like functions that are decorated with auth.requires_login() > > > are not receiving their request.vars dictionary from the url. > > > > For example, say I have an auth-protected function in a controller: > > > > @auth.requires_login() > > > def index(): > > > """ > > > Login-protected index page > > > """ > > > response.flash = str(request.vars) > > > ... > > > > And then link to it from another page: > > > {{=A('My Index', _href=URL(r=request, f='index', vars={'testvar': > > > 999}))}} > > > > Assuming that I'm previous logged in, the flash results in an empty > > > dictionary -- no vars are actually passed in. > > > (Now, if I remove the requires_login() decorator, I can see the > > > 'testvar' variable just fine). > > > > Looking in gluon/tools.py > Auth > requires_login(), on line 1418, I > > > noticed that while request.args are being encoded and passed onto the > > > login url, request.vars are not. > > > > But when I added that in, so that the decorator now encoded and > > > passed > > > on the vars, restarted the server, etc, the flash was still coming up > > > empty -- the vars were not being passed on. > > > > I put in a logging statement into the decorator (right around line > > > 1416), to see if self.environment.request.vars are at least set > > > correctly in the body of the function. > > > And they are not -- the 'testvar' variable is not making it into the > > > decorator at all. > > > > Is this a bug or a feature? And if feature, how do I pass vars into > > > an > > > auth-protected function? > > > > Also, passed-in args are not being handled correctly either. > > > For instance, for the index() function above, if I link to it like so: > > > {{=A('My Index', _href=URL(r=request, f='index', args='testarg'))}} > > > > and display the contents of display.args (as a response.flash, etc), > > > and > > > do NOT auth-protect it, the testarg shows up. > > > But if I decorate it with requires_login, and click on that same link, > > > I > > > get a > > > 404 NOT FOUND > > > > So, it seems like instead of loading 'testarg' into the contents of > > > args, it tries to parse it as part of post-login routing. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

