【发布时间】:2016-10-25 18:15:29
【问题描述】:
我希望有人能解决我对 django_rest_auth 和 django_rest_framework 中 JWT 和常规令牌身份验证的困惑。
我将 django_rest_auth 与 JWT (REST_USE_JWT = True) 一起使用。我正在使用rest_auth.registration 视图和rest_auth 视图并将我的默认身份验证类设置为'rest_framework_jwt.authentication.JSONWebTokenAuthentication'。
我已经包含了来自 rest_auth 的 url,并设置了以下 urlurl(r'^api-token-auth/', obtain_jwt_token),来自 rest_framework_jwt 文档。
当我注册一个新用户时,我希望运行来自 rest_auth RegisterView 的以下代码:
if getattr(settings, 'REST_USE_JWT', False):
self.token = jwt_encode(self.user)
但是在 Django Admin 中,我看到有一个 Auth Token 表,“Tokens”,如果我使用了 Django 内置的 Token Authentication,那么它带有一个看起来像普通令牌的令牌。实际上,当我转到 /rest-auth/login 端点时,它会返回相同的令牌,例如{"key":"6b705cbab083833c38414d4c6e4970c0abbb0c9f"}。但是,当我访问该用户的 api-token-auth/ 端点时,我得到了 JWT 令牌:{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InJvYmVydEByb2JlcnRjaHUuY28udWsiLCJleHAiOjE0NjY2ODI5MjcsInVzZXJfaWQiOjIsInVzZXJuYW1lIjoicm9iZXJ0QHJvYmVydGNodS5jby51ayJ9.IvJIQBY95TrQp3V483GVdpV0fQKedMk9hWEFytMRidU"}
这些密钥和令牌可以互换吗?我可以为同一个用户使用两个令牌吗?当然,我应该只有一个令牌选项来访问受保护的端点吗?
谢谢。
【问题讨论】:
标签: django-rest-framework django-rest-auth