本文介绍: 在views中添加permissions信息补充permissions.py文件# 对注册用户开放操作# 仅管理员可进行其他操作permission_classes 可以接收一个列表,因此权限控制类可以设置多个,请求必须满足所有控制条件才允许被放行。创建一个普通用户测试权限测试PUT权限管理员权限测试。
权限控制是web中的重要组成部分。与以往的博客系统不同,本次工具页面仅支持注册用户。
每个注册用户都能访问到工具页面,并且提交自己的task来选择具体的工具来处理自己提交的文件。每个注册用户都只能访问到自己提交的task,而管理员则可以查看所有task。
1. 权限控制
我们先来设置工具相关页面权限,我们规定只有注册用户才能访问:
全局权限控制
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES':[
'rest_framework.permissions.IsAuthenticated',
]
}
自定义权限控制
#simpletool/views.py
from simpletool.permissions import IsAuthenticatedOrAdmin
# Create your views here.
class simpletoolList(generics.ListCreateAPIView):
queryset = simpleTool.objects.all()
serializer_class = ToolListSerializer
permission_classes = [IsAuthenticatedOrAdmin]
class simpletoolDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = simpleTool.objects.all()
serializer_class = ToolDetailSerializer
permission_classes = [IsAuthenticatedOrAdmin]
补充permissions.py文件
from rest_framework import permissions
class IsAuthenticatedOrAdmin(permissions.IsAuthenticated):
def has_permission(self, request, view):
# 对注册用户开放操作
# if request.method in permissions.SAFE_METHODS:
if (request.user.is_authenticated) and (request.method in permissions.SAFE_METHODS):
return True
# 仅管理员可进行其他操作
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"
原文地址:https://blog.csdn.net/weixin_44056331/article/details/134542747
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_23136.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。