跳到主要内容

电影分类接口权限设置

到现在为止,我们已经实现了很多基础功能。比如电影列表,电影详情,电影收藏等等。但是我们一直忽略了一个问题,那就是对接口的访问权限进行限制。比如说,现在任何人都可以通过操作接口,来实现对电影分类的增删改查操作。这就像任何人都可以随意进入我们家门。所以,接下里我们要对访问权限进行限制,以确保只有特定角色的用户能够执行敏感操作,比如添加、修改和删除分类。

在Django Rest Framework中,我们可以使用权限类来实现接口权限的设置。

DRF的权限类​

Django REST Framework (DRF)中的 rest_framework.permissions提供了一系列的权限类,用于控制对API的访问。权限类可以全局应用,也可以应用于特定的视图或视图集。以下是DRF中一些常用的权限类:

  1. AllowAny: 允许任何用户,认证或未认证,对视图进行GET、POST等所有请求。这是最开放的权限选项。

  2. IsAuthenticated: 要求进行当前请求的用户必须通过认证。未认证的请求将被拒绝。

  3. IsAdminUser: 只允许管理员用户访问。要求用户的is_staff属性为True。

  4. IsAuthenticatedOrReadOnly: 对于认证用户,允许进行所有请求。对于未认证用户,只允许读取操作(例如GET请求)。

  5. DjangoModelPermissions: 使用Django的标准django.contrib.auth模块中的模型权限系统。这意味着它会检查用户对于模型的add、change、delete等权限。

  6. DjangoModelPermissionsOrAnonReadOnly: 类似于DjangoModelPermissions,但允许未认证用户进行读取操作。

  7. DjangoObjectPermissions: 使用Django的对象级权限系统,如django-guardian,来控制对单个对象的访问。

  8. Custom Permissions: DRF允许创建自定义权限类。你可以通过继承rest_framework.permissions.BasePermission并重写.has_permission()和/或.has_object_permission()方法来定义自己的权限逻辑。

每个权限类都可以通过视图的permission_classes属性来设置,例如:

from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView

class ExampleView(APIView):
permission_classes = [IsAuthenticated]

# 视图方法

或者,你可以在项目的设置文件中设置DEFAULT_PERMISSION_CLASSES来全局应用权限类:

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

使用权限类是确保你的API安全、只能被正确的用户访问的有效方式。

使用IsAdminUser的权限类​

首先,我们可以使用DRF提供的IsAdminUser权限类来限制只有管理员用户可以访问分类接口的增删改操作,而其他用户可以进行查看操作。

🔒 试读结束

继续阅读完整内容

以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。

查看课程详情