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

时间:2015-03-22 10:49:25

标签: python authentication flask xml-rpc http-authentication

我正在使用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的任何调用者都必须进行身份验证?

1 个答案:

答案 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')