在我的應用程式中,我有模型:
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,例如使用郵遞員并拉取所有 Meal 物件?
例如: 這可能在郵遞員或其他地方嗎?
我是 django 的初學者,很少使用郵遞員。對不起,如果我寫錯了,英語不是我的母語。
uj5u.com熱心網友回復:
我不確定它會起作用。在過濾器中,您必須撰寫owner=self.request.user(首選且安全)。或者,如果您真的想打擾 ID:owner__id=self.request.user.id.
深入self.request.user欄位有點危險,因為萬一一些未經身份驗證的用戶會到達那里 - 您的代碼將崩潰。
uj5u.com熱心網友回復:
總之,一般來說比較是安全的。之前有人問過這個問題:Django/Auth:可以利用 request.user 并指向其他用戶嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/360195.html
上一篇:為什么在django框架vscode擴展pylance中給我在路徑上的蘆葦線
下一篇:如何解決用戶進入該領域?
