私は、JWTと通常のトークン認証の混乱を、django_rest_auth
とdjango_rest_framework
に解決してくれることを願っています。JWTトークンはDRFトークンと同じテーブルに格納されていますか?
私はJWT (REST_USE_JWT = True)
でdjango_rest_authを使用しています。私は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
から。
私は新しいユーザーを登録すると、私は実行するrest_auth RegisterViewから、次のコードを期待:
if getattr(settings, 'REST_USE_JWT', False):
self.token = jwt_encode(self.user)
をしかし、DjangoのAdminで、私は「トークン」、認証トークンテーブルがあることがわかりDjangoに組み込まれているトークン認証を使用していた場合、通常のトークンのようなトークンが表示されます。実際、/ rest-auth/loginエンドポイントに行くと、同じトークンを返します。 {"key":"6b705cbab083833c38414d4c6e4970c0abbb0c9f"}
。私は、このユーザのためのAPIトークン-AUTH /エンドポイントに行くときしかし、私は、JWTトークンを取得:{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InJvYmVydEByb2JlcnRjaHUuY28udWsiLCJleHAiOjE0NjY2ODI5MjcsInVzZXJfaWQiOjIsInVzZXJuYW1lIjoicm9iZXJ0QHJvYmVydGNodS5jby51ayJ9.IvJIQBY95TrQp3V483GVdpV0fQKedMk9hWEFytMRidU"}
は、これらのキーとトークンの交換はありますか?同じユーザーのためにtokenaを両方使用できますか?確かに、保護されたエンドポイントにアクセスするためのトークンオプションは1つだけ必要ですか?
ありがとうございました。
JWTフラグをTrueに設定したとき、私のフォローアップの質問はなぜ 'django_rest_auth'で作成されたのでしょうか?または、私のセットアップが正しくないですか? – RobChooses
私が覚えている限り、あなたの 'settings.INSTALLED_APPS'から' rest_framework.authtoken'を削除しなければならないし、JWTに切り替える前にdrfの 'ObtainAuthToken'ビューを使用していれば、単にToken.objects.get_or_create( user = user)トークンはデータベースに残ります。 –
http://getblimp.github.io/django-rest-framework-jwt/設定例 - 複数の認証クラスを設定できます。 JWTの認証だけをしたい場合は、 'DEFAULT_AUTHENTICATION_CLASSES'に残してください –