2015-03-22 1 views
0

J'utilise le Flask XML-RPC extension et tout fonctionne bien. Maintenant, je veux protéger le point de terminaison XML-RPC avec une authentification HTTP de base en utilisant Flask HTTPAuth extension.Utiliser Flask XML-RPC avec HTTPAuth?

Cette extension est généralement utilisé avec des itinéraires, mais le point de terminaison XML-RPC est pas défini comme une route:

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

def hello_word(): 
    return "Hello" 

handler.register_function(hello_world) 

Comment puis-je utiliser l'authentification HTTP avec Flask-XML-RPC afin que tous les appels de /xml-rpc doit authentifier?

Répondre

1

Vous devez sous-classe la classe XMLRPCHandler(); chaque appel par /xml-rpc est gérée par le XMLRPCHandler.handle_request() method, vous pouvez décorer que pour gérer l'authentification:

class HTTPAuthXMLRPCHandler(XMLRPCHandler): 
    @auth.login_required 
    def handle_request(self): 
     return XMLRPCHandler.handle_request(self) 

handler = HTTPAuthXMLRPCHandler('xmlrpc') 
handler.connect(app, '/xml-rpc') 
+0

Pour la ligne 4, je reçois un 'TypeError: méthode non liée handle_request() doit être appelée par exemple XMLRPCHandler comme premier argument (GOT rien à la place) ' – boadescriptor

+0

@boadescriptor oups, mon erreur, maintenant corrigé. –

+0

OK pendant qu'il s'authentifie maintenant, j'obtiens une erreur 'ValueError: Voir la fonction n'a pas renvoyé une réponse' pour le chemin'/xml-rpc' (POST) ... – boadescriptor