Was ist der richtige Weg, um einen Django-Kolben-Client zu schreiben?

8

Ich habe viel über django-piston gelesen und benutze es, um eine API für eine App zu entwickeln, die ich entwickle, aber ich werde auf der Client-Seite der Welt hängen. Ich habe die Handler und URI-Mappings geschrieben, und ich kann JSON oder XML nach Herzenslust zurückgeben. Wo ich stecken bleibe, was soll ich damit machen?

Mein ideales Endspiel ist, dass ein iPhone und ein Android-Client Daten konsumieren und zurückgeben, aber ich kenne den richtigen Weg zur Authentifizierung nicht. Der einfachste Weg, den ich mir vorstellen kann, ist das Speichern des Benutzernamens und des Kennworts auf dem Gerät und das Kennzeichnen jeder Anforderung mit ihm. Schließlich wird die Standardauthentifizierung verwendet, aber das führt zu Fehlern. Ich habe die Unterstützung von OAuth für den Kolben angeschaut und mit Hilfe von das funktioniert Tutorial , aber das ist auch nicht die richtige Antwort. Letztendlich würde ich gerne eine einfache Eingabeaufforderung für Benutzername und Passwort auf dem Gerät haben, die über Piston und REST an Django gesendet wird, und ein API-Schlüssel wird zurückgegeben. Das Gerät speichert diesen Schlüssel und kennzeichnet alle nachfolgenden Anfragen damit. Das fühlt sich an wie der richtige Weg, aber ich kann nicht herausfinden, wie es geht. Kann mir irgendjemand in die richtige Richtung zeigen?

    
eddieroger 16.12.2010, 05:59
quelle

1 Antwort

22

Sie können Ihr eigenes Authentifizierungsmodul schreiben. Hier ist ein Beispiel:

%Vor%

Sie benötigen ein Modell, um eine Zuordnung von API-Schlüsseln zu Benutzern zu speichern:

%Vor%

Sie benötigen eine Methode, um die tatsächlichen Schlüssel zu generieren. So etwas funktioniert (sagen wir in der Methode save des ApiKey-Modells:

) %Vor%

Schließen Sie zum Schluss Ihr neues Authentifizierungs-Backend an:

%Vor%

Um Benutzernamen / Passwort für einen API-Schlüssel zu vertauschen, schreiben Sie einfach einen Handler, der BasicAuthentication verwendet, um einen neuen ApiKey (für request.user) zu erstellen und zurückzugeben.

    
Chris Lawlor 17.12.2010, 20:16
quelle

Tags und Links