Was macht dieser Code von Authkit? (Wo sind diese Funktionen und Methoden definiert?)
Frage
ich versuche zu Implementieren Sie meine eigene Authentifizierungsmethode für Authkit und versuche herauszufinden, wie einige der integrierten Methoden funktionieren. Insbesondere versuche ich herauszufinden, wie man die aktualisiert REMOTE_USER
zum environ
korrekt.
So wird es im Inneren von gehandhabt authkit.authenticate.basic
Aber es ist ziemlich verwirrend. Ich kann an einem Ort, an dem REMOTE_USER
und AUTH_TYPE
sind festgelegt. Gibt es hier etwas Seltsames und wenn ja, was ist das?
def __call__(self, environ, start_response):
environ['authkit.users'] = self.users
result = self.authenticate(environ)
if isinstance(result, str):
AUTH_TYPE.update(environ, 'basic')
REMOTE_USER.update(environ, result)
return self.application(environ, start_response)
Es gibt tatsächlich eine Reihe aller Großbuchstaben wie dieser, für die ich keine Definition finden kann. Zum Beispiel, wo macht AUTHORIZATION
Komm von unten:
def authenticate(self, environ):
authorization = AUTHORIZATION(environ)
if not authorization:
return self.build_authentication()
(authmeth, auth) = authorization.split(' ',1)
if 'basic' != authmeth.lower():
return self.build_authentication()
auth = auth.strip().decode('base64')
username, password = auth.split(':',1)
if self.authfunc(environ, username, password):
return username
return self.build_authentication()
Ich habe das Gefühl, vielleicht fehlt mir eine spezielle Syntax -Handhabung für die environ
DICT, aber es ist möglich, dass hier etwas wirklich Seltsames vor sich geht, das für jemanden, der wie ich selbst ist, nicht sofort offensichtlich ist.
Lösung
Wenn ich mir diese Quelle ansehe, sehe ich, dass sie ein (Böses) hat
from paste.httpheaders import *
Das ist eine Möglichkeit, ansonsten zu mysterious Barenames könnte plötzlich im Code erscheinen (genau deshalb ist diese Idiom eine sehr, sehr schlechte Praxis). Ich kann nicht sicher sein, wie diese Kennungen plötzlich und unerklärlicherweise zustande kommen, aber es ist eine Möglichkeit.