Since my last message on this thread, I came up with a patch to the
Auth.login() code that lets me do what I need, so figured I should
post it here. Let me know if you see any issues with this approach (or
improvements to it).

To recap, what I want to do is to let a script runing wget (not a
browser) login and then work with some parts of the app that require
membership in groups. I want to pass the user's name and password to
the login form using post variables in the URL. This is not normally
possible with web2py's Auth.login() function, so it needs to be
modified, like this-

referring to source code here: 
http://www.web2py.com/examples/static/epydoc/web2py.gluon.tools-pysrc.html#Auth
Change these 3 lines ...
 622          if FORM.accepts(form, request.vars, session,
 623                          formname='login',
 624                          onvalidation=onvalidation):

... to be these 3 lines:
if username in request.vars.keys() and request.vars.password and \
        FORM.accepts(form, request.vars,
            formname=None, onvalidation=onvalidation):

This change lets the form take the username and password from the
URL's post variables (or the form itself - but not both of course).
Then my script will login using wget's optional arguments "--keep-
session-cookies --save-cookies=" when submitting the user name and
password to the app's login function. These wget options store the
session cookie in a local file. Then subsequent wget calls to the
restricted parts of the app can use those cookies as a token to gain
access with the option "--load-cookies=".

Apologies for straying a bit from the original use case of this
thread, but perhaps it's general approach will be a helpful hint.

Also: I don't fully understand what the purpose of the "formname"
parameter is, or why it was necessary to None-ify it. If someone can
explain this to me, I'd appreciate it.

Dan



On May 29, 6:15 pm, Dan <danbr...@gmail.com> wrote:
> Reviving this thread from before... I would like to have a shell
> script use wget to authenticate itself and access the data in a web2py
> application, but I haven't been able to get the web2py app to accept
> the post'ed email and password information, which I sent to the user/
> login URL. Is this the right way to do it?
>
> I see some passing references to alternate authorization methods in
> the documentation and the code, but I haven't been able to get much
> detail on what those might be. For example-
>
> http://mdp.cti.depaul.edu/examples/default/tools#authentication:
> "The Auth calls can be extended, personalized, and replaced by other
> authentication mechanisms which expose a similar interface."
>
> and inhttp://mdp.cti.depaul.edu/examples/static/epydoc/web2py.gluon.tools-p...
> :
>  644              if not user:
>  645                  ## try alternate login methods
>  646                  for login_method in
> self.settings.login_methods:
>  647                      if login_method != self and \
>  648                              login_method(request.vars
> [username],
>  649
> request.vars.password):
>  650                          user = self.get_or_create_user
> (form.vars)
>
> Is there a place where I can find out more about what already exists,
> or how to go about getting something like what the original message in
> this thread described?
>
> Dan
>
> On May 17, 8:22 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > I need to look into this. I do not think there can be a generic
> > approach. Each protocol has its own quirks and some do not handle
> > session or authenication.
>
> > Massimo
>
> > On May 17, 8:14 pm, jcorbett <jasoncorb...@gmail.com> wrote:
>
> > > I love the service framework, however I am interested in being able to
> > > authenticate users.  With json/jsonrpcthis shouldn't be too hard as
> > > the browser that the ajax request would come from would have the same
> > > session.
>
> > > Particularly I am concerned with writing an xmlrpc service that
> > > requires authentication.  TheAuthclass doesn't seem to expose any of
> > > the lower level logic for authentication (like a login function that
> > > takes a username and a password).  Any ideas on how I can do this.
> > > I'm not afraid of writing my own implimentation, however I would love
> > > to piggy back off what is already there.
>
> > > I would figure I would want to have a login function that would create
> > > a session key (limited lifetime), and each function would be required
> > > to provide that key.
>
> > > Any ideas would be appreciated.
>
> > > Jason Corbett
> > > BTW I love the simplicity of web2py, it took me maybe 2-3 hours to
> > > write a simple app that was even themed.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to