O que esse código do AuthKit faz? (Onde essas funções e métodos estão definidos?)

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

  •  20-09-2019
  •  | 
  •  

Pergunta

estou tentando implementar meu próprio método de autenticação para autkit E estou tentando descobrir como funcionam alguns dos métodos internos. Em particular, estou tentando descobrir como atualizar o REMOTE_USER por environ corretamente.

É assim que é tratado dentro de authkit.authenticate.basic Mas é bastante confuso. Não consigo encontrar nenhum lugar onde REMOTE_USER e AUTH_TYPE são definidos. Há algo de estranho acontecendo aqui e se sim, o que é?

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)

Na verdade, existem várias coisas como essa, que não consigo encontrar uma definição. Por exemplo, onde faz AUTHORIZATION Venha de baixo:

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

Eu sinto que talvez esteja perdendo algum manuseio especial de sintaxe para o environ Dict, mas é possível que haja algo mais estranho acontecendo aqui que não seja imediatamente óbvio para alguém tão novo no Python quanto para mim.

Foi útil?

Solução

Olhando para essa fonte, vejo que tem um (mal)

from paste.httpheaders import *

Essa é uma maneira de que os barenames de outra maneira podem aparecer repentinamente no código (e é exatamente por isso que esse idioma é uma prática muito, muito ruim). Não posso ter certeza de que é assim que esses identificadores se materializam de repente e inexplicavelmente, mas é uma possibilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top