[英]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.