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