繁体   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