我希望有人可以请清除我与智威汤逊和django_rest_auth
和django_rest_framework
中的正规令牌验证的混淆。JWT令牌是否与DRF令牌存储在同一个表中?
我正在使用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管理,我看到有该身份验证令牌表中,“令牌” ,如果我使用内置令牌验证的Django,则令牌看起来像普通令牌。事实上,当我进入/ rest-auth/login端点时,它会返回相同的标记,例如{"key":"6b705cbab083833c38414d4c6e4970c0abbb0c9f"}
。但是,当我转到该用户的api-token-auth/endpoint时,我得到了JWT令牌:{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InJvYmVydEByb2JlcnRjaHUuY28udWsiLCJleHAiOjE0NjY2ODI5MjcsInVzZXJfaWQiOjIsInVzZXJuYW1lIjoicm9iZXJ0QHJvYmVydGNodS5jby51ayJ9.IvJIQBY95TrQp3V483GVdpV0fQKedMk9hWEFytMRidU"}
这些密钥和令牌是否可以互换?我可以同时使用两个令牌吗?当然,我应该只有一个令牌选项来访问受保护的端点?
谢谢。
谢谢,我想我的后续问题是,当我将JWT标记设置为True时,为什么然后是在'django_rest_auth'中创建的标记?或者我的设置不正确? – RobChooses
据我记得你必须从'settings.INSTALLED_APPS'中删除'rest_framework.authtoken',并且如果你在切换到JWT之前使用了drf中的'ObtainAuthToken'视图,它只需调用Token.objects.get_or_create(用户=用户)和令牌将留在分贝... –
也看这里:http://getblimp.github.io/django-rest-framework-jwt/例如设置 - 你可以设置多个认证类。如果你只想要JWT认证,只留下'DEFAULT_AUTHENTICATION_CLASSES' –