Ausführen von benutzerdefiniertem Code bei der Anmeldung mit Flasch-Security

8

Ich bin neu bei flask, aber einigermaßen python-fähig - ich habe eine flash-App, die flash-security für die Benutzerauthentifizierung verwendet. Ich möchte dem Benutzer-Login-Prozess einige zusätzliche Funktionen hinzufügen. Insbesondere muss ich das auth_token des Benutzers (das ich als einmal benutztes Token eingerichtet habe) bei der Anmeldung bei der Datenbank speichern und beim Abmelden entfernen. Das Problem kommt, weil Flasch-Sicherheit (nach meinem Wissen) die Maschinerie der Anmeldung nicht direkt dem Entwickler aussetzt. Soweit ich aus dem Code ersehen kann, importiert es flask-login, das eine login_user-Funktion verwendet.

Ich habe damit angefangen, diese Funktion zu überschreiben, indem ich flask.ext.login importiere (was ich normalerweise nicht tun müsste) und die Funktion wie folgt neu definiere:

%Vor%

Ich wurde jedoch mit allen möglichen Namespace-Problemen konfrontiert, und es scheint eine wirklich hässliche Art zu sein, das zu tun.

Ich dachte, es könnte einen Weg geben, es mit einem Dekorateur zu machen, aber ich bin neu in der Flasche und habe Dekoratoren nicht sehr oft benutzt.

Irgendwelche Ideen, wie der beste Weg dazu aussehen könnte? für context möchte ich das auth_token in der db, weil ich die webseitenauthentifizierung an einen anderen prozess übergeben muss, der auch auf die db zugreift. Der andere Prozess ist ein API-Server, der Websockets verwendet. Ich möchte die Prozesse nicht kombinieren.

    
domoarrigato 04.08.2014, 08:24
quelle

2 Antworten

5

Ich denke, die Verwendung eines Signaldekorators scheint am einfachsten zu sein. Im folgenden Beispiel sollte on_user_logged_in aufgerufen werden, wenn sich ein Benutzer bei Ihrer App anmeldet. Weitere Informationen in den Dokumenten .

%Vor%     
Doobeh 04.08.2014, 14:31
quelle
0

Halten Sie es am besten sauber, schreiben Sie Ihre eigene new_login_user -Funktion und verwenden Sie diese, wenn Sie sonst flask.ext.login.login_user verwenden würden. Sie könnten Ihre new_login_user in eine eigene Datei schreiben und von dort importieren.

Sie könnten es sogar login_user nennen und niemals flask.ext.login.login_user direkt importieren.

    
opatut 04.08.2014 08:39
quelle

Tags und Links