Я пытаюсь использовать implement my own authentication method for AuthKit и пытаюсь выяснить, как работают некоторые из встроенных методов. В частности, я пытаюсь выяснить, как правильно обновить REMOTE_USER
для environ
.Что делает этот код от AuthKit? (где определены эти функции и методы?)
Это то, как оно обрабатывается внутри 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
Словаря синтаксиса, но вполне возможно, что есть еще что-то действительно странное происходит здесь, что ISN» t сразу очевидный для кого-то как новый для Python как я.
Похоже, это то, откуда оно взялось. Хотелось бы, чтобы я знал, почему для 'AUTH_TYPE.update (environ, 'basic')' казалось, что в то время было лучше, чем 'environ ['AUTH_TYPE'] = 'basic'' (что на самом деле меньше символов) –