You can use a modified call() action:
def call_w_auth():
    """
    exposes services. for example:
    http://..../[app]/default/call/jsonrpc
    decorate with @services.jsonrpc the functions to expose
    supports xml, json, xmlrpc, jsonrpc, amfrpc, rss, csv
    """
    auth.settings.allow_basic_login = True
    auth.basic(basic_auth_realm='any realm is fine')
    return service()

@service.soap('MyFunction',returns={'result':int},args={'a':int,'b':int,})
            def myfunction(a, b):
                return a + b
            def call():
                return service()

Call it with:

            from gluon.contrib.pysimplesoap.client import SoapClient
            client = SoapClient(wsdl="http://
..../app/mycontroller/call_w_auth/soap?WSDL")
            response = client.MyFunction(a=1,b=2)
            return response['result']



2013/9/4 Dave S <snidely....@gmail.com>

> I'm a newbie to web2py, but the book examples have gotten me a long ways,
> and the forum (GG) has helped, also.
>
> I have set up a pretty simple SOAP service, and have turned on Basic AUTH.
>  I get the correct results when the client provides the correct header, so
> all that's good.  But I'd like to return HTTP 401 (Unauthorized) instead of
> HTTP 303 (See Other) if the header is missing or incorrect.  What's the
> best way to do this?  Should I give up the "auth.requires_login" decorator
> on my call() controller and use the procedural technique of calling
> auth.basic() in the body (sec 9.25, pg 452 of the 5th ed).  Or should I use
> the catch303 technique of this earlier post?
> <https://groups.google.com/d/msg/web2py/zC6UKTM0qRY/_dE1vnkmYsMJ>
>
> Footnote:  On the remote machines, I'm using 2 different clients:  SUDS
> from Python, and a simple Java client based on java.xml.soap
> (SOAPConnectionFactory).  In the latter, the 303 error gets turned into an
> ugly exception about Invalid Content-Type ([...].saaj.SOAPExceptionImpl.
>  Is this the exception I should be catching to gracefully report the
> mess-up?  And can I expect a 401 to raise the same exception?
>
> /dps
>
>  --
>
> ---
> 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+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 

--- 
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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to