¿Qué hace este código de AuthKit? (¿Dónde se definen estas funciones y métodos?)

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

  •  20-09-2019
  •  | 
  •  

Pregunta

estoy tratando de Implemente mi propio método de autenticación para AuthKit Y estoy tratando de descubrir cómo funcionan algunos de los métodos incorporados. En particular, estoy tratando de descubrir cómo actualizar el REMOTE_USER por environ correctamente.

Así es como se maneja dentro de authkit.authenticate.basic Pero es bastante confuso. No puedo encontrar ningún lugar donde REMOTE_USER y AUTH_TYPE están definidos. ¿Hay algo extraño aquí y, de ser así, qué es?

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)

En realidad, hay varias cosas mayúsculas como esta para las que no puedo encontrar una definición. Por ejemplo, donde hace AUTHORIZATION Ven desde abajo:

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

Siento que tal vez me estoy perdiendo un manejo especial de sintaxis para el environ dict, pero es posible que haya algo más realmente extraño aquí que no sea de inmediato para alguien tan nuevo en Python como yo.

¿Fue útil?

Solución

Mirando esa fuente, veo que tiene un (mal)

from paste.httpheaders import *

Esa es una forma en que, de lo contrario, los nombres de barenos misteriosos podrían aparecer repentinamente en el código (que es exactamente por qué este idioma es una práctica muy, muy mala). No puedo estar seguro de que esos identificadores se materialicen repentina e inexplicablemente, pero es una posibilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top