该代码来自Authkit做什么? (这些功能和方法在哪里定义?)

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

  •  20-09-2019
  •  | 
  •  

我在尝试着 实施我自己的身份验证方法作为authkit 并试图弄清楚某些内置方法是如何工作的。特别是,我试图弄清楚如何更新 REMOTE_USER 为了 environ 正确。

这就是在内部处理的方式 authkit.authenticate.basic 但这很令人困惑。我找不到任何地方 REMOTE_USERAUTH_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 dict,但是在这里发生的其他事情对我像我本人一样新的人来说并不明显。

有帮助吗?

解决方案

看着那个来源,我看到它有一个(邪恶)

from paste.httpheaders import *

这是代码中可能突然出现的杂乱的男孩的一种方式(这正是这个习惯是一种非常非常糟糕的做法的原因)。我不确定这就是这些标识符突然和莫名其妙地实现的方式,但这是一种可能性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top