Безопасно ли сравнивать 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 быть использован и указывать на другого пользователя?

Вернуться на верх