JWT令牌是否与DRF令牌存储在同一个表中?

时间:2016-06-23 12:06:21

标签: django-rest-framework django-rest-auth

我希望有人可以在django_rest_authdjango_rest_framework中清除我对JWT和常规令牌身份验证的疑惑。

我正在使用django_rest_auth和JWT (REST_USE_JWT = True)。我正在使用rest_auth.registration次观看和rest_auth次观看,并将我的默认身份验证类设置为'rest_framework_jwt.authentication.JSONWebTokenAuthentication'

我已经从rest_auth中添加了网址,并在url(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的内置令牌认证,那么令牌看起来像普通令牌。实际上,当我转到/ rest-auth / login端点时,它会返回相同的令牌,例如{"key":"6b705cbab083833c38414d4c6e4970c0abbb0c9f"}。但是,当我转到此用户的api-token-auth / endpoint时,我获得了JWT令牌:{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InJvYmVydEByb2JlcnRjaHUuY28udWsiLCJleHAiOjE0NjY2ODI5MjcsInVzZXJfaWQiOjIsInVzZXJuYW1lIjoicm9iZXJ0QHJvYmVydGNodS5jby51ayJ9.IvJIQBY95TrQp3V483GVdpV0fQKedMk9hWEFytMRidU"}

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

感谢。

1 个答案:

答案 0 :(得分:1)

请参阅herehere。 JWT不应该被存储在任何比drf令牌更有利的地方 - 你不会在每次请求时都击中数据库。此外,如果您只想使用JWT进行身份验证,则应该删除端点以进行令牌身份验证(drf附带的端点)。