【发布时间】:2021-12-08 11:03:05
【问题描述】:
我在我的 Django REST 框架中使用 Django 用户模型。为此,我将 Django 的 ModelViewSet 用于我的 User 类。
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
Serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'password']
extra_kwargs = {
'password' : {
'write_only':True,
'required': True
}
}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
Token.objects.create(user=user) # create token for the user
return user
但目前来自邮递员,当我使用一个用户的令牌发出请求以查看、删除、编辑其他用户时
http://127.0.0.1:8000/api/users/4/
它能够编辑/删除/查看其他用户。我不希望这种情况发生,一个用户只能对自己提出请求,这就是我想要的。
这是我的应用程序 urls.py
urls.py
from django.urls import path, include
from .views import ArticleViewSet, UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('articles', ArticleViewSet, basename='articles')
router.register('users', UserViewSet, basename = 'users')
urlpatterns = [
path('api/', include(router.urls)),
]
如何防止一个用户在发出 GET/POST/PUT/DELETE 请求时访问其他用户。
编辑 1: 添加 IsOwnerOfObject 类后,他在下面的回答中提供,现在当我请求用户本人的详细信息时,我得到了
未提供身份验证凭据。
【问题讨论】:
标签: python django django-rest-framework django-serializer django-users