gpt4 book ai didi

Django REST Framework - 自定义权限未评估

转载 作者:行者123 更新时间:2023-12-02 06:31:19 25 4
gpt4 key购买 nike

我正在尝试在扩展viewsets.ModelViewSet 的类上设置自定义权限,但似乎我的权限没有被评估。这是我的观点:

from rest_framework import viewsets
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated

import models
import serializers
from permissions import IsAdminOrAuthenticatedReadOnly

class KPIViewSet(viewsets.ModelViewSet):
'''
API endpoint that allows KPI metadata to be viewed or edited
'''

authentication_classes = (BasicAuthentication,)
permission_classes = (IsAdminOrAuthenticatedReadOnly,)

queryset = models.KPI.objects.all()
serializer_class = serializers.KPISerializer

这是我的权限类别:

from rest_framework.permissions import BasePermission, SAFE_METHODS

class IsAdminOrAuthenticatedReadOnly(BasePermission):
def has_permissions(self, request, view):

if request.method in SAFE_METHODS:
return request.user and request.user.is_authenticated()

return request.user and request.user.is_staff()

我遇到的问题是 IsAdminOrAuthenticatedReadOnly 似乎从未得到评估。我通过强制它始终返回“False”以及将 View 中的permission_classes 值切换为“IsAuthenticated”来测试这一点。在前一种情况下,对端点的请求返回,就好像没有身份验证要求一样。稍后,将按预期强制执行身份验证。

我缺少什么想法吗?

最佳答案

方法名称是 has_permission 而不是 has_permissions (no s) ;)

关于Django REST Framework - 自定义权限未评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com