在我的应用程序中,我有一个型号:
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)
现在我有一个问题,在get_queryset
方法中比较owner_id=self.request.user.id
进行身份验证安全吗?
或者是否可以在请求中指定user.id,例如使用邮递员并拉取所有用餐对象?
例如:这在邮递员或其他地方可能吗?
我是django的初学者,很少使用邮递员。如果我写错了,很抱歉,英语不是我的母语。
我不确定它能不能工作。在过滤器中,您必须编写owner=self.request.user
(首选且安全(。或者,如果您真的想麻烦ID:owner__id=self.request.user.id
。
潜入self.request.user
字段有点危险,因为万一某些未经身份验证的用户到达那里,您的代码就会崩溃。
简而言之,通常进行比较是安全的。以前有人问过这个问题:Django/Auth:request.user可以被利用并指向其他用户吗?