我希望有人能解决我对 JWT 和 和 中的常规令牌身份验证的django_rest_auth
困惑django_rest_framework
。
我将 django_rest_auth 与 JWT 一起使用(REST_USE_JWT = True)
。我正在使用rest_auth.registration
视图和rest_auth
视图,并将我的默认身份验证类设置为'rest_framework_jwt.authentication.JSONWebTokenAuthentication'
.
我已经包含了来自 rest_auth 的 url 并设置了以下 url url(r'^api-token-auth/', obtain_jwt_token)
,来自rest_framework_jwt
docs。
当我注册一个新用户时,我希望运行来自 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"}
这些密钥和令牌可以互换吗?我可以为同一个用户使用两个令牌吗?当然,我应该只有一个令牌选项来访问受保护的端点吗?
谢谢。