0

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

dictの特別な構文処理が欠落しているように感じますenvironが、Pythonを初めて使用する人にはすぐにはわからない、本当に奇妙なことが起こっている可能性があります。

4

1 に答える 1

1

そのソースを見ると、(悪)があることがわかります

from paste.httpheaders import *

それは別の方法の1つです-謎の裸の名前が突然コードに現れる可能性があります(これがまさにこのイディオムが非常に非常に悪い習慣である理由です)。それがそれらの識別子が突然そして不可解に具体化する方法であるかどうかはわかりませんが、それは可能性です。

于 2010-03-18T02:09:15.940 に答える