将 Flask XML-RPC 与 HTTPAuth 一起使用?

Use Flask XML-RPC with HTTPAuth?

我正在使用 Flask XML-RPC extension and everything is working well. Now I want to protect the XML-RPC endpoint with a basic HTTP authentication using Flask HTTPAuth extension

此扩展通常与路由一起使用,但 XML-RPC 端点未定义为路由:

handler = XMLRPCHandler('xmlrpc')
handler.connect(app, '/xml-rpc')

def hello_word():
    return "Hello"

handler.register_function(hello_world)

如何将 HTTP 身份验证与 Flask-XML-RPC 一起使用,以便 /xml-rpc 的任何调用者都必须进行身份验证?

你必须subclass XMLRPCHandler() class;通过 /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')