1

我希望有人能解决我对 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_jwtdocs。

当我注册一个新用户时,我希望运行来自 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"}

这些密钥和令牌可以互换吗?我可以为同一个用户使用两个令牌吗?当然,我应该只有一个令牌选项来访问受保护的端点吗?

谢谢。

4

1 回答 1

1

这里这里。JWT 不应该存储在任何地方,这是 drf 令牌的好处之一——您不会在每个请求上都访问数据库。此外,如果您只想使用 JWT 进行身份验证,您应该摆脱用于令牌身份验证的端点(drf 附带的端点)。

于 2016-06-23T12:13:26.143 回答