我正在使用 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),
...
]
最后,使用 Postman,我尝试使用上述令牌发送 POST 请求,但我收到400 Bad Error
此正文错误:
{
"non_field_errors": [
"Invalid payload."
]
}
调查我意识到我必须在有效负载中添加用户名声明但我不想这样做的原因。是否可以将应用程序配置为忽略该声明?