Безопасно ли сравнивать owner_id с request.user.id для аутентификации в django?
В моем приложении у меня есть модель:
class Meal(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(max_length=500)
carbohydrates = models.FloatField()
protein = models.FloatField()
fat = models.FloatField()
fiber = models.FloatField()
owner = models.ForeignKey('auth.User', on_delete=models.CASCADE)
следующий сериализатор:
class MealSerializer(serializers.ModelSerializer):
class Meta:
model = Meal
fields = "__all__"
и этот набор представлений:
class MealViewSet(viewsets.ModelViewSet):
queryset = Meal.objects.all()
serializer_class = MealSerializer
def get_queryset(self):
return Meal.objects.filter(owner_id=self.request.user.id)
А теперь у меня вопрос, безопасно ли сравнивать owner_id=self.request.user.id
в методе get_queryset
для аутентификации?
или можно как-то указать user.id в запросе, например, используя postman, и вытащить все объекты Meal?
например: Возможно ли это в postman или где-то еще?
Я начинающий в django и редко использовал postman. Извините, если я написал что-то неправильно, английский не является моим родным языком.
Я не уверен, что это сработает. В фильтре нужно писать owner=self.request.user
(предпочтительно и безопасно). Или, если вы действительно хотите возиться с идентификаторами: owner__id=self.request.user.id
.
Погружаться в поля self.request.user
немного опасно, потому что в случае, если туда попадет какой-нибудь неаутентифицированный пользователь - ваш код упадет.
Короче говоря, в целом сравнивать безопасно. Об этом уже спрашивали раньше: Django/Auth: Может ли request.user быть использован и указывать на другого пользователя?