14

私は基本的なジャンゴレストサービスを持っています。

  1. 人を登録し、
  2. パスワードを更新します。

その上に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'
  1. これを達成するために何をすべきですか?シリアライザーの create メソッド内で api-auth-token を呼び出す必要がありますか?
  2. django-rest-framework-jwt はどのように複数の認証トークンを処理し、どのトークンがどのユーザーに属しているかを正しく識別しますか? 特にトークンをデータベースに保存しない場合。
  3. この認証メカニズムを使用して、自分のユーザーのみを表示/更新/削除するように制限するにはどうすればよいですか?
  4. この認証メカニズムを使用して、一般的なことを行うにはどうすればよいですか。たとえば、ユーザーが自分の名前を /tmp/abcd.txt に書きたいとします。認証されたユーザーだけがそうできるようにするにはどうすればよいですか?
  5. このアプローチに潜在的な抜け穴はありますか。アプリが大量の機密データを保存する場合、同じコードを使用する必要がありますか?
4

2 に答える 2