Что делает этот код из AuthKit?(где эти функции и методы определены?) - PullRequest
0 голосов
/ 18 марта 2010

Я пытаюсь реализовать свой собственный метод аутентификации для AuthKit и пытаюсь выяснить, как работают некоторые из встроенных методов. В частности, я пытаюсь выяснить, как правильно обновить REMOTE_USER для environ.

Вот как это обрабатывается внутри authkit.authenticate.basic, но это довольно запутанно. Я не могу найти место, где определены REMOTE_USER и AUTH_TYPE. Здесь происходит что-то странное, и если да, то что это?

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)

На самом деле существует множество таких заглавных букв, для которых я не могу найти определение. Например, откуда берется AUTHORIZATION:

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

Я чувствую, что, может быть, мне не хватает какой-то особой синтаксической обработки для environ диктата, но возможно, что здесь происходит что-то действительно странное, что не сразу очевидно для кого-то столь нового для Python, как я.

1 Ответ

1 голос
/ 18 марта 2010

Глядя на этот источник, я вижу, что в нем есть (зло)

from paste.httpheaders import *

это один из способов, с помощью которых загадочные голые имена могут внезапно появиться в коде (именно поэтому эта идиома является очень, очень плохой практикой). Я не могу быть уверен, что именно так неожиданно и необъяснимо материализуются эти идентификаторы, но это возможно.

...