Das Szenario sieht zunächst wie folgt aus: Es gibt zwei Django-Webanwendungen und es besteht eine bestimmte Verbindung zwischen den beiden Anwendungen. In manchen Fällen muss jeder die Daten des anderen erhalten.
Aber unsere Anwendungen werden auf jeden Fall über entsprechende Authentifizierungsmechanismen verfügen. Du lässt doch nicht zu, dass Leute zufällig vorbeikommen, oder? Zum Beispiel müssen Sie Ihre Karte durchziehen, um in den Bus zu gelangen (naja, Seniorenkarte~~~). Wir wissen, dass nach der Anmeldung des Browserbenutzers jede Anfrage eine entsprechende Sitzung hat und der Server die Berechtigungsinformationen des Benutzers basierend auf der verwendeten Sitzung ermitteln kann. Für uns ist es jedoch nicht einfach, es auf der Serverseite zu verwenden, und es kann zu Problemen wie der Ablaufzeit der Sitzung kommen.
Also habe ich die offizielle Django-Dokumentation überprüft und festgestellt, dass Django einen Remote-Benutzermechanismus bereitstellt, der Remote-Aufrufe zwischen Servern unterstützen kann. Sie müssen lediglich die folgenden Einstellungen in der Einstellung hinzufügen:
MIDDLEWARE_CLASSES = ( '...', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.RemoteUserMiddleware', '...', ) AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.RemoteUserBackend', )
Ich habe es mit Freude getestet und festgestellt, dass es immer noch nicht funktionierte ~~~ (Ich wusste es Es war nicht so einfach.)
Es bleibt nur noch ein Schritt: Fügen Sie eine Zeile in der Einstellung hinzu und fügen Sie den Benutzernamen REMOTE_USER in der Umgebungsvariablen hinzu. Beachten Sie, dass jerry ein Benutzer ist, der bereits im System vorhanden ist
os.environ['REMOTE_USER'] = "jerry"
Abgeschlossen, sodass, wenn die Anfrage keine Sitzungsinformationen enthält oder anhand der Sitzung festgestellt wird, dass der Benutzer nicht angemeldet ist, der oben genannte REMOTE_USER-Benutzer verwendet wird wird automatisch für die Anmeldung verwendet. Auf diese Weise verfügen wir über eine öffentliche Bordkarte, aus Sicherheitsgründen müssen wir jedoch möglicherweise einige Berechtigungseinschränkungen für diesen Benutzer festlegen. (Auf diese Weise können Sie, selbst wenn Sie ins Auto steigen, nur stehen, ohne etwas zu tun, haha)
Aber das kann auch zu Problemen führen. Beispielsweise können wir beurteilen, ob der aktuelle Benutzer angemeldet ist in anderen Schnittstellen, und wenn nicht, beginnen Sie mit der Weiterleitung zum Anmeldebildschirm. Nach der Verwendung von REMOTE_USER wird es jedoch automatisch angemeldet und kann nicht zur Anmeldeseite weitergeleitet werden. Dies erfordert eine Neugestaltung der Benutzeranmeldelogik.
Das obige ist der detaillierte Inhalt vonDjango-Server rufen gegenseitig ihre Methoden über Remote-Benutzer auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!