On Jul 16, 2009, at 6:18 AM, mdipierro wrote: > > web2py validates the URL and does allow the @ sign in the URL, only > alphanumaric characters, _, - and non-consecutive . and /.
Did you mean "does not allow"? Shouldn't the validation be more generous in the args section? There's nothing wrong with this as an http URL: http://localhost:8000/init/default/json_read_nologin/user%40domain.com (Where does the validation happen?) > > On Jul 16, 2:07 am, David Watson <[email protected]> wrote: >> I'm using web2py 1.65.5 with google app engine. >> >> I've run into a problem with request.args in relation to my json >> calls: >> >> @service.json >> def json_read_nologin(): >> return request.args[0] >> >> or the same function defined sans the service decorator, both work >> fine, as long as I don't pass something containing an @ sign, i.e. >> >> http://localhost:8000/init/default/json_read_nologin/[email protected] >> >> this generates an invalid request even if url encoded: >> >> http://localhost:8000/init/default/json_read_nologin/user >> %40domain.com >> >> I'm not sure what I'm doing wrong here but this behavior doesn't seem >> like what I'd expect. >> >> Thanks, >> David >> >> On Jun 23, 8:47 pm, mdipierro <[email protected]> wrote: >> >>> You cannot mix authorization and services this way. It is >>> complicated >>> an there are many cases.... >> >>> If you have >> >>> @auth.requires_login() >>> def acceptme(): >>> return 'accepted' >> >>> you can call "http://..../acceptme.json" and you will get aJSON >>> response. You do not need the decorator. >> >>> @auth.requires_login() >>> @service.json() >>> def acceptme(): >>> return 'accepted' >>> def run(): return service() >> >>> exposes "http://..../service/json/acceptme" before requiring login. >> >>> @service.json() >>> def acceptme(): >>> return 'accepted' >>> @auth.requires_login() >>> def run(): return service() >> >>> this should work but will require login for all services >> >>> @service.json() >>> @auth.requires_login() >>> def acceptme(): >>> return 'accepted' >>> def run(): return service() >> >>> this is not completely clear to me why does not work but I see some >>> logical problems. >> >>> Massimo >> >>> On Jun 23, 7:31 pm, Hasanat Kazmi <[email protected]> wrote: >> >>>> Here is an interesting behavior. >>>> i have following function >> >>>> @auth.requires_login() >>>> @service.json >>>> @service.jsonrpc >>>> def acceptme(): >>>> return "accepted" >> >>>> in this case, whatever username and password I give, I get returned >>>> "accepted" but if I put @auth.requires_login() after >>>> @service.jsonrpc, >>>> it always returns me "Object does not exist" . >> >>>> I call it like >>>> this:http://hasanatkazmi%40gmail.com:**...@localhost:8000/sahana/admin/cal >>>> ... >> >>>> Anyone has an idea whats going on? >> >>>> On Jun 4, 7:28 am, Alexei Vinidiktov <[email protected]> >>>> wrote: >> >>>>> I've tried this with the pyjamas tutorial and it didn't work. I've >>>>> enabled user registration and registered a user whose >>>>> credentials are >>>>> used in the URL below. I got a server error when a function >>>>> requiring >>>>> user authentication was called. >> >>>>> I changed the line >> >>>>> JSONProxy.__init__(self, "../../default/call/jsonrpc", >>>>> ["getTasks", >>>>> "addTask","deleteTask"]) >> >>>>> to read >> >>>>> JSONProxy.__init__(self, >>>>> "http://myemail%40gmail.com%[email protected]:8000/pyjamas/defaul >>>>> ...", >>>>> ["getTasks", "addTask","deleteTask"]) >> >>>>> What am I missing? >> >>>>> Thanks. >> >>>>> On Mon, Jun 1, 2009 at 12:51 PM, mdipierro >>>>> <[email protected]> wrote: >> >>>>>> OK. As you request since the latest version in trunk you can do >> >>>>>> @auth.requires_login() >>>>>> def index(): return 'hello world' >> >>>>>> and access it with >> >>>>>> curl -u username:passwordhttp://127.0.0.1:8000/app/default/ >>>>>> index >> >>>>>> or >> >>>>>> curlhttp://username:[email protected]:8000/app/default/index >> >>>>>> In the latter case username and password have to be encoded by >>>>>> urllib.quote() >> >>>>>> works for services too. >> >>>>>> Massimo >> >>>>>> On May 31, 10:43 pm, Dan <[email protected]> wrote: >>>>>>> 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)loginand then work with some parts of the app that >>>>>>> require >>>>>>> membership in groups. I want to pass the user's name and >>>>>>> password to >>>>>>> theloginformusing post variables in the URL. This is not >>>>>>> normally >>>>>>> possible with web2py'sAuth.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 >>>>>>> >>>>>>> ... >>>>>>> Change these 3 lines ... >>>>>>> 622 ifFORM.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 theformtake the username and password from the >>>>>>> URL's post variables (or theformitself - but not both of >>>>>>> course). >>>>>>> Then my script willloginusing wget's optional arguments "--keep- >>>>>>> session-cookies --save-cookies=" when submitting the user name >>>>>>> and >>>>>>> password to the app'sloginfunction. 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 <[email protected]> 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/ >>>>>>>> loginURL. 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: >>>>>>>> "TheAuthcalls 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 alternateloginmethods >>>>>>>> 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 <[email protected]> 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 <[email protected]> wrote: >> >>>>>>>>>> I love the service framework, however I am interested in >>>>>>>>>> being able to >>>>>>>>>> authenticate users. Withjson/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 >>>>>>>>>> aloginfunction 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 aloginfunction 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. >> >>>>> -- >>>>> Alexei Vinidiktov > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" 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 -~----------~----~----~----~------~----~------~--~---

