我需要限制我的一些 SOAP 方法,以便只能使用访问令牌访问它们。
我的 SOAP 服务与 Spyne 一起运行,我的 OAuth2 提供程序来自 django-oauth2-toolkit。
from django.contrib.auth.decorators import login_required
from spyne.service import ServiceBase
from spyne.decorator import srpc, rpc
from oauth2_provider.views.generic import ProtectedResourceView
class SOAPService(ProtectedResourceView, ServiceBase):
@rpc(Unicode, _returns=Unicode)
@login_required()
def HelloWorld(ctx, data):
return "hello"
如果我尝试向此函数发送 SOAP 请求,我会在 Spyne 的日志中收到错误 500,并显示以下内容:
File "/Library/Python/2.7/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
if HelloWorld_func(request.user):
AttributeError:“WsgiMethodContext”对象没有属性“用户”
我是 SOAP 和 OAuth2 的新手,我一直坚持下去。您对如何让 OAuth2 提供者检查 Spyne 服务上的 SOAP 访问令牌有任何线索或最佳实践吗?