【问题标题】:What is purpose of changing token key name in DjangoRestFramework在 DjangoRestFramework 中更改令牌键名的目的是什么
【发布时间】:2017-08-17 14:05:54
【问题描述】:

在 DjangoRestFramework 中,您可以更改标头中的关键字以进行令牌身份验证。

来自docs

注意:如果您想在标题中使用不同的关键字,例如 Bearer,只需子类化 TokenAuthentication 并设置关键字类 变量。

更改默认关键字的目的是什么? 我见过“Bearer”、“Basic”和其他一些变体,但就是不明白这样做的目的。 谁能解释一下?

【问题讨论】:

    标签: token django-rest-framework


    【解决方案1】:

    我发现我们需要如何将keyword 传递给TokenAuthentication

    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'
    

    那么我们将在settings.py 中使用authentication.TokenAuthentication,而不是使用BearerAuthentication

    # settings.py
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': (                                                                                                                                                                                       
            'your.models.BearerAuthentication',
        )
    }
    

    【讨论】:

    • 提醒任何试图为 Session 或 Basic auth 设置关键字的人:这两者的标头不检查关键字变量。相反,您需要覆盖 authenticate_header 方法以返回 None 或您选择的字符串
    • 官方文档中也提到了这一点。非常感谢您的完整回答。
    【解决方案2】:

    许多网络服务器支持多种授权方法。在那些 仅发送令牌的情况是不够的。

    Source

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2016-10-06
      • 1970-01-01
      相关资源
      最近更新 更多