【发布时间】:2018-10-24 06:59:51
【问题描述】:
我正在使用Django 2.0 和Django RESET Framework 为我的应用程序编写REST API。
我已经配置了以下认证方式
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
}
截至目前,它允许所有经过身份验证的用户访问web api视图。
我想要的是让少数用户(可能是超级管理员用户)能够通过登录从会话身份验证或网络浏览器访问 API。
编辑 2:contacts/views.py
class ContactViewSet(viewsets.ModelViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
permission_classes = (IsAuthenticated,)
def perform_create(self, serializer):
serializer.save(user_id=self.request.user)
【问题讨论】:
-
你能添加你的联系人 API 视图吗?
-
更新了有问题的代码
-
您确定浏览器请求使用的是经过身份验证的用户?
-
知道了,我的配置有点错误。但是如何只限制超级管理员用户访问网络呢?
-
您必须创建一个自定义中间件或将其构建到您的视图中。没有任何理由根据有效用户访问系统的方式来限制他们使用相同的功能。
标签: django django-rest-framework django-authentication