Que fait ce code d'Authkit? (Où ces fonctions et méthodes sont-elles définies?)

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

  •  20-09-2019
  •  | 
  •  

Question

J'essaie de Implémentez ma propre méthode d'authentification pour Authkit Et j'essaie de comprendre comment fonctionnent certaines des méthodes intégrées. En particulier, j'essaie de comprendre comment mettre à jour le REMOTE_USER pour environ correctement.

C'est ainsi qu'il est géré à l'intérieur de authkit.authenticate.basic Mais c'est assez déroutant. Je ne trouve aucun lieu où REMOTE_USER et AUTH_TYPE sont définis. Y a-t-il quelque chose d'étrange qui se passe ici et si oui, qu'est-ce que c'est?

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)

Il y a en fait un certain nombre de toutes les choses en majuscules comme celle-ci pour lesquelles je ne trouve pas de définition. Par exemple, où fait AUTHORIZATION Viens de ci-dessous:

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()

J'ai l'impression que je manque peut-être une gestion spéciale de syntaxe pour le environ Dict, mais il est possible qu'il y ait quelque chose d'autre vraiment bizarre ici qui n'est pas immédiatement évident pour quelqu'un d'aussi nouveau à Python que moi-même.

Était-ce utile?

La solution

En regardant cette source, je vois qu'il a un (mal)

from paste.httpheaders import *

C'est une façon par ailleurs mystérieux que les Barenames pourraient soudainement apparaître dans le code (c'est exactement pourquoi cet idiome est une très, très mauvaise pratique). Je ne peux pas être sûr que c'est ainsi que ces identifiants se matérialisent soudainement et inexplicablement, mais c'est une possibilité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top