码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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"

  • 相关阅读:
    前端传参数进行Mybatis调用mysql存储过程执行返回值
    [PHP]写个简单的分页静态接口用宝塔部署到Nginx
    信息学奥赛一本通:1408:素数回文数的个数
    北京一互联网公司被端,所有开发被全部带走!
    Flutter-自定义短信验证码
    【虹科干货】TWAMP:什么是双向主动测量协议?
    就是一整个爱住,你们大胆飞,我就是最坚强的后盾——Java面试突击宝典
    【广州华锐互动】智能家居设计3D虚拟还原系统
    【【萌新的FPGA学习之初识ZYNQ】】
    LeetCode每日一题(1996. The Number of Weak Characters in the Game)
  • 原文地址:https://blog.csdn.net/weixin_44056331/article/details/134542747
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号