rest framework 如何实现权限
- 1.首先需要创建权限类,可以继承 rest framework 的基础权限类,然后重写
has_permission(self, request, view):
方法
from rest_framework import permissions
class VIPPermission(permissions.BasePermission):
message = '必须是VIP用户才能访问' # 权限不通过时,提示的 detail 信息
def has_permission(self, request, view):
"""
返回 True,表明权限通过,进行下一个权限检查
返回 False 表明权限不通过,禁止访问资源,并提示 `message` 信息
一个View视图类可以有多个`权限检查类`,只有所有都满足,才能访问相应资源。
"""
user: models.UserInfo = request.user
if user.user_type >= 2:
return True
-
2.将权限检查类进行
配置
,分为局部与全局- 1)在VIew 视图类中添加,只对当前类起作用。[这种更常用一些]
class OrderView(APIView): permission_classes = [VIPPermission, ] # 权限检查 def get(self, request, *args, **kwargs): pass
- 2) 在settings.py进行全局配置
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ['api.utils.permission.VIPPermission', ] }
扩展:rest_framework
用户认证与权限的区分
-
用户认证
的检验比权限
更早进行,只有用户认证
通过后才会进行权限
检查。 -
使用场景不同,
用户认证
是针对整个系统,验证用户是否有权限登陆。权限
是针对具体的资源
。
网友评论