Django中的JWT配置

时间:2018-12-06 12:39:35

标签: django django-rest-framework jwt django-rest-framework-jwt

我正在使用Pyhton 2.7.15开发用于Windows的Django应用程序。我需要实现一种身份验证机制,如果用户具有特定的JWT令牌,则他可以浏览该应用程序(换句话说,我只需要验证该令牌而不生成它)。令牌非常简单,也许会是这样:

标题

{
  "alg": "HS256",
  "typ": "JWT"
}

有效载荷

{
  "iss": "customIssuer"
}

签名

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

要实施验证服务,我安装了Rest framework JWT工具,并通过以下方式修改了setting.py

...

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.TokenAuthentication'
    ),
}

JWT_AUTH = {
    'JWT_ISSUER': 'customIssuer'
}

...

然后我修改了urls.py

...

from rest_framework_jwt.views import verify_jwt_token

urlpatterns = [
    ...
    url(r'^api-token-verify/', verify_jwt_token),
    ...
]

最后,我尝试使用邮递员发送带有上述令牌的POST请求,但此正文出现400 Bad Error错误:

{
    "non_field_errors": [
        "Invalid payload."
    ]
}

调查我意识到必须在有效负载中添加用户名声明的原因,但我不想这样做。是否可以将应用程序配置为忽略该声明?

0 个答案:

没有答案