其他分享
首页 > 其他分享> > drf -- 权限组件Permissions

drf -- 权限组件Permissions

作者:互联网

权限组件Permissions

权限控制可以限制用户对于视图的访问和对于具体数据模型对象的访问。

提供的权限

配置权限的方式一:

在配置文件中进行全局配置

# drf的配置信息,需要卸载django的配置文件,而且必须写在REST_FRAMEWORK的字典中,才能被drf识别
REST_FRAMEWORK = {
    ....
    #  权限[全局配置,所有的视图都会被影响到]
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated', # 已经登录认证的用户才能访问
    )
}

#如果未指明,则采用如下默认配置
'DEFAULT_PERMISSION_CLASSES': (
   'rest_framework.permissions.AllowAny',
)

配置权限的方式一:

在具体的视图中通过permission_classes属性来设置

from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import RetrieveAPIView

class StudentAPIView(RetrieveAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    authentication_classes = [SessionAuthentication]
    permission_classes = [IsAuthenticated]

自定义权限

示例代码:

from rest_framework.permissions import BasePermission

class IsXiaoMingPermission(BasePermission):
    def has_permission(self, request, view):
        if request.user and request.user.username == "xiaoming":
            return True

class StudentViewSet(ModelViewSet):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    permission_classes = [IsXiaoMingPermission]  #让该属性直接选择自定义的 权限类,视图函数中就方法就是执行自定义的权限

标签:framework,--,permission,rest,Permissions,视图,view,权限,drf
来源: https://www.cnblogs.com/zhiqianggege/p/16221788.html