auth decorator with rest api

79 views
Skip to first unread message

yogeshwar khalkar

unread,
Apr 12, 2018, 8:55:02 AM4/12/18
to web2py-users
Hi All,

I was implementing the @auth.requires_login() with @request.restful() but it not working.
It redirects me every time even if I am login.

@auth.requires_login()
@request.restful()
def getActivity():
    def POST():
        data = "do Something"
        return json(data)
    return locals()

Here is my login API

@request.restful()
def login():
def POST():
fields = simplejson.loads(request.body.read())
user = super(Auth, auth).login(**fields)
return json(user)
return locals()

please help me with it.

Dave S

unread,
Apr 12, 2018, 4:27:26 PM4/12/18
to web...@googlegroups.com

Doesn't the decorator have to go on the "def call():"  (bottom of default.py in the welcome app) ?
 <URL:http://web2py.com/books/default/chapter/29/10/services#Services-and-Authentication>

I think you can do inline checks, like auth.has_membership(), if you need to do additional checks.

/dps 

Anthony

unread,
Apr 12, 2018, 6:20:43 PM4/12/18
to web2py-users
Doesn't the decorator have to go on the "def call():"  (bottom of default.py in the welcome app) ?
 <URL:http://web2py.com/books/default/chapter/29/10/services#Services-and-Authentication>

That's not relevant here, as it applies to the Service() class, not functions decorated with @request.restful (if you look at the previous section, it shows the @auth.requires_login decorator used in conjunction with @request.restful).

Anthony

Anthony

unread,
Apr 12, 2018, 6:22:42 PM4/12/18
to web2py-users
How are you (a) logging in and (b) making the calls to getActivity?

yogeshwar khalkar

unread,
Apr 13, 2018, 12:27:35 AM4/13/18
to web...@googlegroups.com
For logging, I am using rest API
@request.restful()
def login():
def POST():
fields = simplejson.loads(request.body.read())
user = super(Auth, auth).login(**fields)
return json(user)
return locals()

I am using this api in angular so for calling getActivity
Angular code
this.http.get(this.baseurl+'workflow/getActivity/'+this.processId+'/'+this.id).subscribe(res=>{
      console.log(res);
});
this.http.post(this.baseurl+'workflow/getActivity',JSON.stringify(this.actdata)).subscribe(res=>{
      console.log(res);
});

rest api

@auth.requires_login()
@request.restful()
def getActivity():
    def GET(process, activity):
        data = "do Something"
        return json(data)
    def POST():
        fields = simplejson.loads(request.body.read())
        data = "do Something"
        return json(data)
    return locals()

Thanks,
Yogeshwar

--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Anthony

unread,
Apr 13, 2018, 10:09:57 AM4/13/18
to web2py-users
So, are both the login and subsequent requests all being made via Ajax from a browser? If so, confirm that the session cookie is being set and sent back and forth on each request, and confirm that the user record is being added to the session upon login.

Thanks,
Yogeshwar

yogeshwar khalkar

unread,
Apr 14, 2018, 2:29:02 AM4/14/18
to web...@googlegroups.com
The session cookie is being set and user record is being added to the session upon login.
but it not being sent back and forth on each request.

Also, self.user is None before logout and logout event is not being added to the auth_event table.

I am confused here with sending session back and forth.

I an using web2py with angular5, every operation is working using rest API, web2py running on port 8000 and angular running on port 4200



‌

Thanks,
Yogeshwar

Anthony

unread,
Apr 14, 2018, 2:21:22 PM4/14/18
to web2py-users
Hard to say what is going on. Would have to see how these Ajax calls are being made and what response is received by the browser. What is the URL in the address bar of the browser? Is the site being served by web2py (port 8000) or by an angular development server (port 4200)?

Anthony


On Saturday, April 14, 2018 at 2:29:02 AM UTC-4, yogeshwar khalkar wrote:
The session cookie is being set and user record is being added to the session upon login.
but it not being sent back and forth on each request.

Also, self.user is None before logout and logout event is not being added to the auth_event table.

I am confused here with sending session back and forth.

I an using web2py with angular5, every operation is working using rest API, web2py running on port 8000 and angular running on port 4200



‌

Thanks,
Yogeshwar

yogeshwar khalkar

unread,
Apr 15, 2018, 4:32:05 AM4/15/18
to web...@googlegroups.com
The site is served by angular and angular calling the web2py API but, the site is not online to show you.

If someone worked on this scenario Please give me some pointers.




‌

Thanks,
Yogeshwar
Reply all
Reply to author
Forward
0 new messages