私はDjango Tokenベースの認証を使用しています。 (JWTトークンはAWS Cognitoのような第三者によって生成され、署名と有効期限を確認するだけです)。Djangoのトークンベースのユーザーなしの認証モデル
このRESTアプリケーションにはユーザーモデルはありません。API呼び出しを使用するユーザーは、JWTトークンによってのみ認証される必要があります。
ビューでclass JSONWebTokenAuthentication(TokenAuthentication):
def authenticate_credentials(self, jwtToken):
try:
payload = jwt.decode(jwtToken, secret_key,verify=True)
# user = User.objects.get(username='root')
user = AnonymousUser()
except (jwt.DecodeError, User.DoesNotExist):
raise exceptions.AuthenticationFailed('Invalid token)
except jwt.ExpiredSignatureError:
raise exceptions.AuthenticationFailed('Token has expired')
return (user, payload)
:プロセス上
@api_view(["POST"])
@authentication_classes((JSONWebTokenAuthentication,))
@permission_classes((AllowAny,))
、全くトークンを追跡しません。トークンの有無にかかわらず、APiコールが機能しています。私が2つ以下の変更を加えた場合、それは機能しています。それを行うには
user = User.objects.get(username='root')
#user = AnonymousUser()
@permission_classes((IsAuthenticated,))
一つの方法は、持っているので、同じ「ユーザー名」と同じユーザを挿入し、必要なときにユーザーが[このWebアプリケーションは、任意の数のインスタンスに拡張可能性があることを私のアプリとリファレンスに少なくとも1人のユーザーを持つこと、です自動化される。 ]。しかし、代わりに、私は認証で "ユーザー"の概念を排除できますか?
ありがとうございます。それは私の回避策として働いた。 AWSコグニートのようなthirdpartyツールを使用しているとき、私はDjango Userモデルを気にするべきではないと考えています。 –