如何通过Django Rest API传递权限?
我想创建一个自定义权限,根据用户是否是故事作者返回true/flase,并通过restAPI传递此信息。因此,当作者请求非作者的故事时,权限返回“false”,我可以通过API访问这些信息。结果应该是这样的:如何通过Django Rest API传递权限?,django,django-rest-framework,permissions,Django,Django Rest Framework,Permissions,我想创建一个自定义权限,根据用户是否是故事作者返回true/flase,并通过restAPI传递此信息。因此,当作者请求非作者的故事时,权限返回“false”,我可以通过API访问这些信息。结果应该是这样的: "user": { "id": 35, "username": "HII", "user_permissions": [ IsStoryOwner: "False", ] } 然而,我很难实现
"user": {
"id": 35,
"username": "HII",
"user_permissions": [
IsStoryOwner: "False",
]
}
然而,我很难实现这一点。我写了以下许可:
class IsStoryOwner(permissions.BasePermission):
"""
Check if authenticated user is story author
"""
def has_object_permission(self,request,obj,**kwargs):
if request.user.id == story.author:
return True
return False
然后我将权限集成到我的UserAPI中
class UserAPI(generics.RetrieveAPIView):
permission_classes = [
permissions.IsAuthenticated, IsStoryOwner
]
serializer_class = UserSerializer
def get_object(self):
return self.request.user
但是,权限未出现在my API中,
“用户权限”:[]
仍为空 您可以使用SerializerMethodField。不要忘记这一点,Django会在您的IStoryowner返回False时向客户端发送403状态代码
class UserSerializer(ModelSerializer):
user_permissions = SerializerMethodField()
class Meta:
fields = ('user_permissions', 'other_fields')
model = YourUserModel
def get_user_permissions(self, obj):
request = self.context['request'] #
return request.user.id == obj.story.author