Hat Tastypie eine Hilfsfunktion, um API-Schlüssel zu generieren?

8

Was ich versuche zu tun ist, wann immer der Benutzer einen API-Schlüssel anfordert - unabhängig davon, ob der Benutzer bereits einen generiert hat oder nicht - erzeugt das System einen völlig neuen Schlüssel.

Ich weiß, dass das Aufrufen von ApiKey.objects.create() einen API-Schlüssel für den Benutzer generiert, für den noch kein generiert wurde. Wenn jedoch ein Benutzer einen hat, wird beim Versuch, die Methode .create() aufzurufen, ein Fehler ausgegeben.

In diesem Fall dachte ich, dass es am besten wäre, meinen eigenen Schlüsselgenerator zu schreiben. Ich hoffe jedoch, dass jemand hier vielleicht eine Hilfsfunktion kennt, die es mir erlaubt, einen zufälligen API-Schlüssel zu generieren und ihn dann manuell in die Datenbank zu speichern.

Würde jemand eine solche Hilfsfunktion kennen?

    
Salehen Rahman 07.06.2012, 22:55
quelle

4 Antworten

5

Ich habe es herausgefunden.

Zuerst versuchen Sie, den API-Schlüssel des Benutzers zu erhalten. Wenn es existiert, wird kein Fehler ausgelöst. Um neu zu generieren, legen Sie den Wert des abgerufenen Benutzerschlüssels auf None fest und speichern Sie dann den Schlüssel.

Wenn ein Fehler ausgelöst wurde, erstellen Sie einfach einen neuen Schlüssel.

%Vor%     
Salehen Rahman 07.06.2012, 23:27
quelle
6

Oder Sie können einfach den eingebauten Befehl von tastypie verwenden:

%Vor%     
Erik 15.12.2013 21:11
quelle
4

Ja, der Code zum Generieren des Schlüssels ist als Instanzmethode definiert ApiKey.generate_key() , die Sie direkt verwenden können.

Hier ist eine einfachere Version, die einiges an Rätselraten darüber ausschließt, ob der Benutzer bereits existiert oder nicht und verwendet ApiKey.generate_key() direkt und nicht implizit durch ApiKey.save() , was es meiner Ansicht nach etwas klarer macht, was versucht wird vollendet werden:

%Vor%

UPDATE:

Daher ist die kürzeste Version:

%Vor%

Dies erzeugt einen neuen Schlüssel oder gibt einen vorhandenen zurück.

    
Filip Dupanović 07.06.2012 23:38
quelle
0

Es ist viel zu einfach, integrierte Funktionen zu verwenden, immer. Um Api-Schlüssel in Tastypie zu generieren, verwenden Sie " create_api_key " von Tastypie s ApikeyAuthentication '.

Sie müssen nur " create_api_key " von tastypie.models importieren und dann rufen Sie es von django-signal oder wie Sie benötigen.

d. h.

%Vor%

Erklärt ausführlich und einfacher bei:

Ссылка

    
V. Chutake 08.12.2015 07:08
quelle

Tags und Links