Cosa fa questo codice di Authkit? (Dove sono definite queste funzioni e metodi?)

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

  •  20-09-2019
  •  | 
  •  

Domanda

sto provando a Implementa il mio metodo di autenticazione per Authkit E sto cercando di capire come funzionano alcuni dei metodi integrati. In particolare, sto cercando di capire come aggiornare il REMOTE_USER per environ correttamente.

Ecco come viene gestito all'interno di authkit.authenticate.basic Ma è piuttosto confuso. Non riesco a trovare nessun posto dove REMOTE_USER e AUTH_TYPE Sono definiti. C'è qualcosa di strano che sta succedendo qui e, se sì, che cos'è?

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)

In realtà ci sono un certo numero di cose maiuscole come questa per le quali non riesco a trovare una definizione. Ad esempio, dove fa AUTHORIZATION Vieni dal basso:

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

Sento che forse mi manca una gestione speciale della sintassi per il environ Dicit, ma è possibile che ci sia qualcos'altro che sta accadendo qui che non è immediatamente ovvio per qualcuno così nuovo a Python come me stesso.

È stato utile?

Soluzione

Guardando quella fonte, vedo che ha un (male)

from paste.httpheaders import *

Questo è un modo altrimenti misterioso i barenames potrebbero improvvisamente apparire nel codice (motivo per cui questo linguaggio è una pratica molto, molto brutta). Non posso essere sicuro che sia così che quegli identificatori improvvisamente e inspiegabilmente si materializzano, ma è una possibilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top