私は基本的なジャンゴレストサービスを持っています。
- 人を登録し、
- パスワードを更新します。
その上にjwt認証を追加したい。チュートリアルに従う場合、プロジェクトの urls.py に「api-token-auth」という名前の新しい URL を追加する必要があります。しかし、私はこの新しい URL を追加したくなく、登録呼び出しで応答としてトークンを送信したいと考えています。
これが私のコードです:
serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
def create(self, validated_data):
user = User(
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
def update(self, instance, validated_data):
instance.set_password(validated_data['password'])
instance.save()
return instance
class Meta:
model = User
fields = ('url', 'username', 'password')
lookup_field = 'username'
write_only_fields = ('password',)
ビュー.py
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.exclude(is_superuser=1)
serializer_class = UserSerializer
lookup_field = 'username'
- これを達成するために何をすべきですか?シリアライザーの create メソッド内で api-auth-token を呼び出す必要がありますか?
- django-rest-framework-jwt はどのように複数の認証トークンを処理し、どのトークンがどのユーザーに属しているかを正しく識別しますか? 特にトークンをデータベースに保存しない場合。
- この認証メカニズムを使用して、自分のユーザーのみを表示/更新/削除するように制限するにはどうすればよいですか?
- この認証メカニズムを使用して、一般的なことを行うにはどうすればよいですか。たとえば、ユーザーが自分の名前を /tmp/abcd.txt に書きたいとします。認証されたユーザーだけがそうできるようにするにはどうすればよいですか?
- このアプローチに潜在的な抜け穴はありますか。アプリが大量の機密データを保存する場合、同じコードを使用する必要がありますか?