簡體   English   中英

獲取“未提供身份驗證憑據。” 嘗試訪問我的 ModelViewSet URL 時的消息

[英]Getting “Authentication credentials were not provided.” message when trying to access my ModelViewSet URL

我正在使用 Django Rest 框架並使用基於令牌的身份驗證創建應用程序。 我有一個PlaceViewSet class 繼承自ModelViewSet 即使用戶沒有發送令牌,我也希望列表和檢索都能正常工作,而只有在用戶發送了令牌時才允許創建、銷毀和更新。 但是我Authentication credentials were not provided. 適用於所有類型的請求。 我還想堅持 REST 標准,以便列表、檢索、更新、創建、銷毀都在同一個 model 視圖集下。 如果 DRF 不允許任何沒有 Token 的請求,如果我將默認身份驗證設置為TokenAuthentication ,那么為什么我能夠訪問登錄和注冊視圖?

您可以在 settings.py 中更改權限策略

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny'
    ],
}

如果要為方法添加特殊權限。

允許:

from rest_framework.permissions import IsAuthenticated, IsAdminUser    

class SpecialPermissionMixin(object):

    def get_permissions(self):

        user_permission_list = ['list', 'retrieve', 'update']
        admin_permission_list = ['destroy', 'create']

        if self.action in user_permission_list:

            permission_classes = [
                IsAuthenticated,
            ]
        elif self.action in admin_permission_list:

            permission_classes = [
                IsAdminUser,
            ]
        else:
            permission_classes = []

        return [permission() for permission in permission_classes]

看法:

class BlogViewSet(SpecialPermissionMixin, viewsets.ModelViewSet):
      ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM