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