2013-03-13 2 views
3

Django에서 기본 인증을 Spyne와 함께 사용하려면 어떻게해야합니까? 아래에서 시도했지만 작동하지 않습니다. WSDL 페이지 파일을 잘 볼 수 있지만 실제로 웹 서비스로 SayHello를 호출하려고 할 때마다 403 FORBIDDEN 응답이 표시됩니다. 나는 403이 CSRF와 관련 있다고 생각하지만, csrf_exempt가 그 문제를 해결하지 않아야합니까? 안녕하세요, logged_in_or_basicauth 님의 스 니펫은 http://djangosnippets.org/snippets/243/입니다.Django에서 기본 인증을 Spyne와 함께 사용하려면 어떻게해야합니까?

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) 

답변

6

당신은 foo_view의 정의 아래

foo_view = csrf_exempt(foo_view) 

을 시도 할 수 있습니다. 그러면 다른 사람 주위에 crsf_exempt가 필요 없습니다.

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

정답입니까? –

+0

그것은 나를 위해 일한다!. – esauro