我在rest框架中有一个viewset
,它的行为不像我期望的那样。如果我使用非员工用户登录并导航到api-url/users,我可以看到那里列出的所有用户。
IsAuthenticated
权限正在工作,因为如果我注销,我得到一个错误,说我没有经过身份验证。
我使用这些权限不对吗?我已经完成了教程并浏览了文档,但我找不到任何东西告诉我为什么这不应该工作
视图:
class UserViewSet(viewsets.ModelViewSet):
"""Viewset for viewing users. Only to be used by admins"""
queryset = LangaLangUserProfile.objects.all()
serializer_class = UserSerializer
filter_backends = (filters.DjangoFilterBackend, )
filter_fields = '__all__'
permissions_classes = (permissions.IsAdminUser, )
class LanguageViewSet(viewsets.ReadOnlyModelViewSet):
"""Viewset for Language objects, use the proper HTTP methods to modify them"""
queryset = Language.objects.all()
serializer_class = LanguageSerializer
filter_backends = (filters.DjangoFilterBackend, )
filter_fields = '__all__'
permissions_classes = (permissions.IsAuthenticated, )
网址:
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'language', views.LanguageViewSet)
序列化器:
class UserSerializer(serializers.ModelSerializer):
"""Serializer for User objects"""
class Meta:
model = LangaLangUserProfile
fields = '__all__'
class LanguageSerializer(serializers.ModelSerializer):
"""Serializer for the Language model"""
class Meta:
model = Language
fields = '__all__'
depth = 2
打字错误!
是permission_classes
,不是permissions_classes
。
关于本部分:
IsAuthenticated权限正在工作,因为如果我注销,我会得到一个错误,说我没有经过身份验证。
我不知道为什么会发生这种情况,但我责怪DEFAULT_PERMISSION_CLASSES
在你的Django设置-也许你有IsAuthenticated
指定在那里?