我希望有人可以請清除我與智威湯遜和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' –