AuthKit的代码有什么作用? (这些函数和方法在哪里定义?)

时间:2010-03-18 01:09:27

标签: python authkit

我正在尝试implement my own authentication method for 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的一些特殊语法处理,但是有可能在这里发生了一些非常奇怪的事情,这对于像Python这样新的人来说并不是很明显。自己。

1 个答案:

答案 0 :(得分:1)

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

from paste.httpheaders import *

这是一种其他方式 - 神秘的昵称可能突然出现在代码中(这正是为什么这个成语是一个非常非常糟糕的做法)。我无法确定这些标识符是如何突然和莫名其妙地实现的,但这是一种可能性。