Benötigen Django benutzerdefinierten Authentifizierungs-Backends ein Passwort nehmen?
-
03-07-2019 - |
Frage
Hier ist, wie meine Universität führt die Authentifizierung: wir den Benutzer auf eine Website weitergeleitet, sie in ihren Benutzernamen und das Passwort eingeben, dann erhalten sie zurück zu uns mit dem Benutzernamen und ein Login-Schlüssel übergeben in die Query-String umgeleitet. Wenn wir den Benutzer zurück zu erhalten, rufen wir eine gespeicherte Prozedur in der Datenbank der Universität, die den Benutzernamen, Login-Schlüssel nimmt, und die IP-Adresse und sagt uns, ob diese gültig ist.
Ich habe eine Django benutzerdefinierten Authentifizierungs-Backend bekam eingerichtet, um unser Ende all dies handhaben. Macht es einen Unterschied eine oder andere Weise, ob ich es in der Lage machen ein Passwort Argument zu akzeptieren (da wir nicht wirklich ihr Passwort nehmen)? Gerade jetzt, ich habe es so eingerichtet, dass es die Login-Schlüssel als Passwort-Argument. Wäre es gut, schlecht sein, oder auch nicht für mich, dies zu ändern, um dies als sagen zu nehmen, login_key statt als Passwort?
Lösung
Der Django docs sagen:
So oder so, authentifizieren sollte überprüfen die Berechtigungsnachweise es wird, und es sollte Rückkehr ein User-Objekt, das entspricht diese Anmeldeinformationen, wenn die Anmeldeinformationen sind gültig. Wenn sie nicht gültig, es return None sollte.
Die ‚So oder so‘ bezieht sich auf, ob die authenticate () Methode verwendet einen Benutzername / Passwort-Kombination, oder einfach nur einen Token. Ihr Szenario fällt zwischen den beiden, so würde ich denken, dass die ‚beste‘ Antwort wäre Ihre beglaubigen zu schreiben () einen Benutzernamen und ein Login-Schlüssel zu nehmen, und gibt die richtigen Benutzer oder keine entsprechend.