ماذا يفعل هذا الرمز من Authkit؟ (أين يتم تعريف هذه الوظائف والأساليب؟)

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

  •  20-09-2019
  •  | 
  •  

سؤال

أحاول قم بتنفيذ طريقة المصادقة الخاصة بي لـ 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 ، ولكن من الممكن أن يكون هناك شيء آخر غريب حقًا يحدث هنا ليس واضحًا على الفور لشخص جديد على Python مثل نفسي.

هل كانت مفيدة؟

المحلول

إذا نظرنا إلى هذا المصدر ، أراه يحتوي على (شر)

from paste.httpheaders import *

هذه طريقة واحدة يمكن أن تظهر أسماء البارناتية فجأة في الكود (وهذا هو بالضبط السبب في أن هذا المصطلح هو ممارسة سيئة للغاية). لا أستطيع أن أكون متأكدًا من أن هذه هي الطريقة التي تتحقق بها تلك المعرفات فجأة وبشكل غير مفهوم ، لكنها احتمال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top