AuthKitのこのコードは何をしますか? (これらの機能と方法はどこで定義されていますか?)
質問
私は。。をしようとしています authkitに独自の認証方法を実装します そして、組み込みのメソッドの一部がどのように機能するかを把握しようとしています。特に、私は更新する方法を見つけようとしています REMOTE_USER
為に environ
正しく。
これが内部で処理される方法です 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
DICT、しかし、ここで本当に奇妙なことが起こっている可能性があります。
解決
そのソースを見ると私はそれが(悪)を持っていることがわかります
from paste.httpheaders import *
それは、それ以外の方法でコードに突然見た目のある方法で表示される可能性があります(これがまさにこのイディオムが非常に悪い練習である理由です)。それがこれらの識別子が突然かつ不可解に実現する方法であるかどうかはわかりませんが、それは可能性です。
所属していません StackOverflow