Was macht dieser Code von Authkit? (Wo sind diese Funktionen und Methoden definiert?)

StackOverflow https://stackoverflow.com/questions/2467013

  •  20-09-2019
  •  | 
  •  

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top