Django-rest-framework: الاسم الرئيسي في ترخيص AuthToken

تم إنشاؤها على ٢٨ أبريل ٢٠١٦  ·  3تعليقات  ·  مصدر: encode/django-rest-framework

المفتاح الافتراضي لـ TokenAuthorization هو "Token". المفتاح الأكثر استخدامًا هو "Bearer". منذ وقت ليس ببعيد حاولت تغيير اسم رمز المصادقة لتطبيق REST الخاص بنا. لقد وجدت فئة TokenAuthentication على السطر 142 في المصادقة. إنها تحدد طريقة "Authenticate_header" التي ترجع "Token" لذلك اعتقدت أنه من الممكن تجاوز هذه الطريقة وإرجاع "Bearer". لا هذا ليس مستحيل. اضطررت إلى تجاوز الفصل بأكمله فقط لتغيير اسم الرمز المميز. هل فاتني شيء؟ يجب أن يكون هذا في ملف settings.py. لا أعرف ما إذا كانت هناك طريقة أخرى لتعريف اسم الرمز المميز. إذا كان هناك ، من فضلك ، أعطني رابطًا للمستندات. إذا لم يكن ذلك ممكنًا ، فيمكنني بسهولة إنشاء مكون إضافي يأخذ اسم الرمز من ملف الإعدادات. يبدو أن أسلوب "عنوان_المصادقة" لم يتم استخدامه على الإطلاق. هذا هو تعديلي:

فئة CustomTokenAuthentication (TokenAuthentication):
"" "قم بتعديل رأس التفويض الافتراضي إلى" حامل "الأكثر شيوعًا.
""
header_key = b'bearer '

def authenticate(self, request):
    auth = get_authorization_header(request).split()

    if not auth or auth[0].lower() != self.header_key:
        return None

    if len(auth) == 1:
        msg = _('Invalid token header. No credentials provided.')
        raise exceptions.AuthenticationFailed(msg)
    elif len(auth) > 2:
        msg = _(
            'Invalid token header. Token string should not contain spaces.'
        )
        raise exceptions.AuthenticationFailed(msg)

    try:
        token = auth[1].decode()
    except UnicodeError:
        msg = _(
            'Invalid token header. Token string should not contain',
            'invalid characters.'
        )
        raise exceptions.AuthenticationFailed(msg)

    return self.authenticate_credentials(token)

def authenticate_header(self, request):
    return "Bearer"

التعليق الأكثر فائدة

لقد واجهت للتو نفس المشكلة.

tomchristie هل تقبل طلب سحب يقوم بتعيين متغير فئة keyword إلى 'Token' في TokenAuthorization ، واستخدامه داخل طرقه (بدلاً من ترميزه ، كما يتم ذلك الآن) ، حتى نتمكن بعد ذلك من القيام بما يلي:

class BearerAuthentication(authentication.TokenAuthentication):
    '''
    Simple token based authentication using utvsapitoken.

    Clients should authenticate by passing the token key in the 'Authorization'
    HTTP header, prepended with the string 'Bearer '.  For example:

        Authorization: Bearer 956e252a-513c-48c5-92dd-bfddc364e812
    '''
    keyword = 'Bearer'

؟

ال 3 كومينتر

يحدد رأس المصادقة ما إذا كان يجب استخدام استجابة 401 وإذا كان الأمر كذلك فما القيمة التي يجب أن يحتوي عليها رأس WWW-Authenticate .

إذا كنت ترغب في تغيير سلوك مصادقة الرمز المميز ، فكل ما عليك فعله هو القيام بذلك بشكل صريح.

لقد واجهت للتو نفس المشكلة.

tomchristie هل تقبل طلب سحب يقوم بتعيين متغير فئة keyword إلى 'Token' في TokenAuthorization ، واستخدامه داخل طرقه (بدلاً من ترميزه ، كما يتم ذلك الآن) ، حتى نتمكن بعد ذلك من القيام بما يلي:

class BearerAuthentication(authentication.TokenAuthentication):
    '''
    Simple token based authentication using utvsapitoken.

    Clients should authenticate by passing the token key in the 'Authorization'
    HTTP header, prepended with the string 'Bearer '.  For example:

        Authorization: Bearer 956e252a-513c-48c5-92dd-bfddc364e812
    '''
    keyword = 'Bearer'

؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات