Что делает этот код от Authkit? (Где определяются эти функции и методы?)

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

  •  20-09-2019
  •  | 
  •  

Вопрос

я пытаюсь Внедрить мой собственный метод аутентификации для 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, как и я.

Это было полезно?

Решение

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

from paste.httpheaders import *

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top