• django+drf+vue 简单系统搭建 (4) 用户权限


    权限控制是web中的重要组成部分。与以往的博客系统不同,本次工具页面仅支持注册用户。

    每个注册用户都能访问到工具页面,并且提交自己的task来选择具体的工具来处理自己提交的文件。每个注册用户都只能访问到自己提交的task,而管理员则可以查看所有task。

    1. 权限控制

    我们先来设置工具相关页面权限,我们规定只有注册用户才能访问:

    全局权限控制

    修改setting,添加在installed_apps之后

    1. # settings.py
    2. REST_FRAMEWORK = {
    3. 'DEFAULT_PERMISSION_CLASSES':[
    4. 'rest_framework.permissions.IsAuthenticated',
    5. ]
    6. }
    • 限制访问:最简单的权限是允许通过身份验证的用户访问,并拒绝未经身份验证的用户访问,这对应于rest_framework中的IsAuthenticated类。

    自定义权限控制

    在views中添加permissions信息

    1. #simpletool/views.py
    2. from simpletool.permissions import IsAuthenticatedOrAdmin
    3. # Create your views here.
    4. class simpletoolList(generics.ListCreateAPIView):
    5. queryset = simpleTool.objects.all()
    6. serializer_class = ToolListSerializer
    7. permission_classes = [IsAuthenticatedOrAdmin]
    8. class simpletoolDetail(generics.RetrieveUpdateDestroyAPIView):
    9. queryset = simpleTool.objects.all()
    10. serializer_class = ToolDetailSerializer
    11. permission_classes = [IsAuthenticatedOrAdmin]

    补充permissions.py文件

    1. from rest_framework import permissions
    2. class IsAuthenticatedOrAdmin(permissions.IsAuthenticated):
    3. def has_permission(self, request, view):
    4. # 对注册用户开放操作
    5. # if request.method in permissions.SAFE_METHODS:
    6. if (request.user.is_authenticated) and (request.method in permissions.SAFE_METHODS):
    7. return True
    8. # 仅管理员可进行其他操作
    9. return request.user.is_superuser

    permission_classes 可以接收一个列表,因此权限控制类可以设置多个,请求必须满足所有控制条件才允许被放行。

    现在来让我们看一下直接访问时的状况:

    http http://127.0.0.1:8000/api/simpletool/

    创建一个普通用户

     

     测试权限

    http -a john:123456 http://127.0.0.1:8000/api/simpletool/

     测试PUT权限

    http -a john:123456 POST http://127.0.0.1:8000/api/simpletool/ title="test_tool"

     管理员权限测试

    http -a xiaofan0101:123456 POST http://127.0.0.1:8000/api/simpletool/ title="test_tool"

  • 相关阅读:
    嵌入式开发:RTOS调试——处理计时问题
    node.js学习之模块化、npm
    贝叶斯实验设计中的重要性采样
    快速排序知识总结
    Java文件目录相关操作
    mybatis全局配置文件详解
    CDGA|维护企业数据安全的六大管控措施
    LeetCode234(Python)—— 回文链表(简单)
    ES6 Class和Class继承
    掌握测评补单技术对Shopee、Lazada店铺有什么好处?
  • 原文地址:https://blog.csdn.net/weixin_44056331/article/details/134542747