У меня есть базовая служба отдыха django, которая
- регистрирует человека и
- обновляет свой пароль.
Я хочу добавить поверх него аутентификацию jwt. Если я буду следовать руководству, мне нужно будет добавить новый URL-адрес с именем «api-token-auth» в urls.py проекта. Но я не хочу добавлять этот новый 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',)
views.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'
- Что нужно сделать для этого? должен ли я вызывать api-auth-token внутри метода создания моего сериализатора?
- Как django-rest-framework-jwt обрабатывает несколько токенов аутентификации и правильно определяет, какой токен принадлежит какому пользователю? Особенно, если он не хранит токены в БД.
- Как я могу использовать этот механизм аутентификации, чтобы ограничить моего пользователя просмотром / обновлением / удалением только его пользователя?
- Как я могу использовать этот механизм аутентификации для чего-либо в целом. Например, если пользователь хочет записать свое имя в /tmp/abcd.txt. Как я могу убедиться, что это смогут сделать только аутентифицированные пользователи?
- Есть ли в этом подходе потенциальные лазейки? Должен ли я использовать тот же код, если мое приложение будет хранить много секретных данных?