django - 如何在 Django 中使用 Spyne 的基本身份验证?

标签 django basic-authentication spyne

如何在 Django 中使用 Spyne 的基本身份验证?我尝试了以下但它不起作用。我可以很好地查看 WSDL 页面文件,但每当我实际尝试将 SayHello 作为 Web 服务调用时,我都会收到 403 FORBIDDEN 响应。我相信 403 与 CSRF 相关,但 csrf_exempt 不应该让我解决这个问题吗?顺便说一句,logged_in_or_basicauth 来自这个片段:http://djangosnippets.org/snippets/243/ .

class CapsWebService(ServiceBase):
    @rpc(String, Integer, _returns=Iterable(String))
    def SayHello(ctx, name, times):
        for i in xrange(times):
            yield 'Hello, %s' % name

caps_web_service = csrf_exempt(DjangoApplication(Application(
    [CapsWebService], 'solutions.sfcs', in_protocol=Soap11(), out_protocol=Soap11(), interface=Wsdl11(),
)))

@logged_in_or_basicauth()
def foo_view(request):
    logger.debug('views.foo_view()')
    return caps_web_service(request)

最佳答案

你可以试试

foo_view = csrf_exempt(foo_view)

下面是foo_view的定义。那么你不需要其他的 crsf_exempt

caps_web_service = DjangoApplication(Application(
    [CapsWebService], 'solutions.sfcs', in_protocol=Soap11(), out_protocol=Soap11(),         interface=Wsdl11(),
))

关于django - 如何在 Django 中使用 Spyne 的基本身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398006/

相关文章:

python - 如何检查对象在 Django 中是否具有可见属性?

python - GeoDjango 和混合器。 'PointField'没有属性 '_meta'

nginx:仅在http请求为OPTIONS时才不需要基本身份验证

python - spyne rpc装饰方法如何消耗soap信封

Python Spyne - SOAP 服务器 - 不需要此元素。预期是({http ://} Element_name )

python - 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

java-哪种方式易于实现且安全,用于 Web 应用程序/Web 服务中的最终用户身份验证

java - 如何使用 java 发送带有用户名和密码的 SOAP 请求,就像在 SOAP UI 中一样

python - 在 Django 中使用模板标签检索数据是不好的做法吗?