我正在使用Flask XML-RPC extension,一切运作良好。现在,我想使用Flask HTTPAuth extension通过基本HTTP身份验证来保护XML-RPC端点。
此扩展通常与路由一起使用,但XML-RPC端点未定义为路由:
handler = XMLRPCHandler('xmlrpc')
handler.connect(app, '/xml-rpc')
def hello_word():
return "Hello"
handler.register_function(hello_world)
如何在Flask-XML-RPC中使用HTTP身份验证,以便/xml-rpc
的任何调用者都必须进行身份验证?
答案 0 :(得分:1)
你必须继承 XMLRPCHandler()
类;通过/xml-rpc
进行的每次调用都由XMLRPCHandler.handle_request()
method处理,您可以对其进行修饰以处理身份验证:
class HTTPAuthXMLRPCHandler(XMLRPCHandler):
@auth.login_required
def handle_request(self):
return XMLRPCHandler.handle_request(self)
handler = HTTPAuthXMLRPCHandler('xmlrpc')
handler.connect(app, '/xml-rpc')