首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在permission_classes中添加什么,只允许查看特定组的接口- django

在permission_classes中添加IsMemberOfGroup,只允许查看特定组的接口。

IsMemberOfGroup是一个自定义的权限类,用于验证用户是否属于特定组。它可以通过以下步骤实现:

  1. 创建一个名为IsMemberOfGroup的权限类,并继承自permissions.BasePermission
  2. IsMemberOfGroup类中实现has_permission方法,该方法接收requestview两个参数。
  3. has_permission方法中,首先判断用户是否已经通过身份验证,如果没有则返回False。
  4. 然后,获取用户所属的所有组。
  5. 接下来,定义一个名为allowed_groups的列表,其中包含允许访问的特定组的名称。
  6. 遍历用户所属的所有组,如果用户属于allowed_groups中的任何一个组,则返回True,表示有权限访问。
  7. 如果用户不属于任何一个允许的组,则返回False,表示没有权限访问。

以下是一个示例代码:

代码语言:txt
复制
from rest_framework import permissions

class IsMemberOfGroup(permissions.BasePermission):
    allowed_groups = ['group1', 'group2']  # 允许访问的特定组的名称

    def has_permission(self, request, view):
        if not request.user.is_authenticated:
            return False

        user_groups = request.user.groups.values_list('name', flat=True)
        for group in user_groups:
            if group in self.allowed_groups:
                return True

        return False

在视图中使用该权限类时,只需将其添加到permission_classes列表中即可:

代码语言:txt
复制
from rest_framework.views import APIView

class MyView(APIView):
    permission_classes = [IsMemberOfGroup]
    ...

这样,只有属于allowed_groups中的特定组的用户才能访问该接口。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云身份管理(CAM):https://cloud.tencent.com/product/cam
  • 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  • 腾讯云访问管理(TAM):https://cloud.tencent.com/product/tam
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python测试开发django-61.权限认证(permission)

authentication是身份认证,判断当前用户登录方式是哪种认证方式 permissions 是权限认证,判断哪些用户有操作权限 authentication身份认证 身份验证是将收到请求和一标识证书...IsAuthenticatedOrReadOnly 表示仅仅允许身份验证通过用户访问,或者只允许只读请求(GET请求)访问。...相关配置 settings.py,INSTALLED_APPS添加rest_framework和rest_framework.authtoken INSTALLED_APPS = [ 'apiapp...card相关信息,接着前面一篇讲,添加authentication_classes和permission_classes authentication_classes = (TokenAuthentication...访问添加银行卡账号接口时,需头部带上token,格式为 Authorization: Token 1c0debb44fa0054d312616e7000ae78ce396df8e 带上token去请求时候

2K40

Django REST Framework-常用权限类型

DjangoModelPermissions:基于Django模型权限控制。允许用户执行特定操作之前检查模型权限。...如果用户已经验证身份,则检查该用户是否具有执行特定操作模型权限。DjangoObjectPermissions:允许用户执行特定操作之前检查模型实例权限。...如果用户已经验证身份,则检查该用户是否具有执行特定操作模型实例权限。如何使用权限Django REST Framework权限通常通过将它们附加到视图类来使用。...我们将IsOwnerOrReadOnly权限类添加到该视图permission_classes属性,以确保只有代码片段所有者才能够修改或删除它。...put()方法,我们使用self.request.user将当前请求用户设置为代码片段所有者。这样,如果用户成功更新代码片段,他们就会成为该代码片段新所有者。

1.4K20
  • python测试开发django-63.基于函数视图(@api_view())

    前言 上一篇讲了基于类视图,REST framework,你也可以使用常规基于函数视图。...它提供了一简单装饰器,用来包装你视图函数, 以确保视图函数会收到Request(而不是Django一般HttpRequest)对象,并且返回Response(而不是DjangoHttpResponse...查看数据库会新增一条数据 ?...token认证与访问权限 如果我们希望只有拿到登录token后,才能访问此接口,那就需要加authentication_classes和permission_classes两个装饰器,先导入 from...关于token认证相关知识参考前面这篇python测试开发django-61.权限认证(permission) 除了上面用到装饰器,其它可用装饰器有: - @renderer_classes(...

    2.3K40

    drf框架jwt认证,以及自定义jwt认证

    0909自我总结 drf框架jwt 一.模块安装 官方:http://getblimp.github.io/django-rest-framework-jwt/ 他是个第三方开源项目 安装:pip...setting把这个函数加进去 'DEFAULT_AUTHENTICATION_CLASSES': [ '我们自定义认证函数对象', ], 我们做局部设置就在我们自定义添加 authentication_classes...', ], 我们做局部设置就在我们自定义添加 permission_classes = [我们自定义认证函数对象] 六.自定义访问次数设置 """ 系统: 1)AnonRateThrottle:.../min', # 登录用户一分钟可以访问10次 'anon': '3/min', # 游客一分钟可以访问3次 } 视图类: class TempAPIView(APIView):...> 有限制 """ 自定义频率类:一分钟一个手机号只允许访问一次接口 from rest_framework.throttling import SimpleRateThrottle class ThreeMinRateThrottle

    2.6K10

    django接口(实战篇)

    :视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django接口(入门篇)》 《用django接口(优化篇)》 正文 上一部分我们通过基本类重构了...接口分页效果 我们可以看到接口返回信息还包含了前一页和后一页 url 是不是很人性化 接口数据多条件筛选 目前我们接口要查找特定信息只能通过 id 来查找,这肯定是不够完善,这部分将设置接口多条件查询...首先我们需要安装过滤器模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py INSTALLED_APPS 进行注册才可以使用。...注册完以后,我们 REST_FRAMEWORK 字典中将过滤器添加进去 REST_FRAMEWORK = { # 配置全局分页类型和每页数量 'DEFAULT_PAGINATION_CLASS...permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsPostAuthorOrReadOnly) 当我们通过别的用户名对该接口做修改信息操作

    2.1K20

    Python3+ Django3:自动生成Swagger接口文档

    实际工作,经常会遇到:“前端抱怨后端给接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新”。...为了解决这个问题,业界推出了一个Swagger框架来管理接口文档,实现接口文档自动更新。 采用Swagger框架来管理接口文档,常用于微服务架构设计或者Java后端服务工程。...django 3.0已经不支持该库了,取而代之是全新第三方drf-yasg库。...删除现有的一(删) partial_update: 更新现有一个或多个字段(改:部分更改) update: 更新一...4、Swagger除了可以即时生成接口文档以外,还可以用于在线做一些接口功能测试,如下所示。 ? ? 5、Swagger还可以查看model定义各字段类型及参数说明。 ?

    15.4K32

    DRF比Django认证和权限高在哪里

    会发现接口报错了: ? owner_id不能为空?因为前面只给Snippet添加了owner字段,还没有写反序列化更新模型代码,所以通过请求访问视图,再尝试反序列化时候,报错了。...我们请求并没有用户信息,正常来说访问视图时候就该被拦截了。 给视图添加认证 我们需要让API更符合常规,让未认证用户不能执行视图中代码。...登录视图 如果用浏览器打开http://127.0.0.1:8000/snippets/,会发现只有GET方法没有POST,这是因为需要添加DRF登录视图,tutorial/urls.py添加rest_framework.urls...接着snippets/views.py给SnippetDetail加上: from snippets.permissions import IsOwnerOrReadOnly permission_classes...()方法,再添加class到类视图permission_classes

    1.5K20

    DRF-认证权限频率

    DRF提供了认证方法 我们知道APIView执行过程dispatch方法走了三大认证self.initial(request, *args, **kwargs) def initial...有一些接口是认证后才能调用,比如我们登录后才能查看个人站点内容等··· 执行视图函数之前执行了认证方法:self.perform_authentication(request) 这里写一个认证...demo,只有登录过才能查看Book表 '''auth.py''' from rest_framework.authentication import BaseAuthentication from...,那么验证认证和权限时候就会错乱,获取和修改等操作都在一个视图里了,分开写会好一点 频率 作用 限制视图接口被访问频率次数 限制条件 : IP、ID、唯一键 频率周期 : 时(h)、分(m)、秒(...配置文件配置,限制频率 局部/全局使用 认证权限频率+五个接口 模型 from django.db import models # Create your models here.

    59710

    8.寻光集后台管理系统-用户管理(增删改查)

    完成了登录和注册视图之后,需求还需要管理员可以管理用户列表,所以就需要完成基础增删改查操作 权限 注册和登录操作,我们API对谁可以编辑或删除项目没有任何限制。...身份验证 身份验证是将传入请求与一识别凭证相关联机制,例如请求携带用户名密码,签名令牌等。然后权限之类限制策略才可以使用这些凭证来确定是否应该允许请求。...还可以使用pagination_class属性单个视图上设置分页类。 修改分类样式 如果希望修改分页样式特定方面,则需要覆盖其中一个分页类,并设置要更改属性。...django_paginator_class - django框架分页类。默认使用django.core.paginator.Paginator。 page_size - 表示一页数据条数数值。...子类通过每个视图中设置pagination_class属性来应用分类。

    1.8K30

    drf接口文档生成与管理

    1、接口文档简述 项目开发,例如web项目的前后端分离开发,需要由前后端相关人员共同定义接口,编写接口文档。之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。...# core api接口文档 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema', } 总路由中添加接口文档路径...2.5 补充说明 1、上面访问到接口文档,可以按照右边指引通过安装coreapi-cli,通过命令行操作访问接口文档 2、对于视图集ViewSetretrieve名称,接口文档叫做read...3、接口文档参数Description需要在模型类或序列化器类字段以help_text选项定义,例如 模型类定义 class EnvironmentView(models.Model):... 下面记录在drf通过swagger生成接口文档具体实现流程,参考drf swagger文档 3.2 安装django-rest-swagger库 pip3 install django-rest-swagger

    4.7K10

    drf框架认证与权限工作原理及设置

    0909自我总结 drf框架认证与权限工作原理及设置 一.概述 1.认证 工作原理 返回None => 游客 返回user,auth => 登录用户 抛出异常 => 非法用户 前台对于用户信息进行判断...1)如果前台没有携带认证信息,直接定义为游客 2)如果前台携带了认证信息并认证通过,定位为登录用户,将登录用户user对象保存在 requset.user 3)如果前台携带了认证信息但没有认证通过....权限 工作原理 返回False => 没有权限,将信息返回给前台 返回True => 拥有权限,进行下一步认证(频率认证) 相关设置 AllowAny:允许所有用户 IsAuthenticated:只允许登录用户...# 局部取消权限组件:permission_classes = [] # 区别启用权限组件:permission_classes = [权限类们] # 填写参数AllowAny 如 from rest_framework.authentication...三.全局设置 setting设置 REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ # django默认session

    1.3K41

    Django REST 框架详解 09 | 权限组件

    接口测试 二、自定义权限类 1. 代码实现 2. 测试接口 一、权限组件 1....分析源码 通过分析源码了解权限组件方法调用过程 APIView dispatch 中使用 initial 方法实现初始化并进行三大认证,第二步进行权限组件调用 rest_framework/views.py...drf 设置文件查看默认权限配置 rest_framework/settings.py # 默认权限类配置 DEFAULTS = { 'DEFAULT_PERMISSION_CLASSES':...[ 'rest_framework.permissions.AllowAny', ] } 查看默认系统权限实现 rest_framework/permissions.py class...True 不满足设置用户条件,代表无权限,返回 False 进行全局或局部配置 全局:配置文件 settings.py 局部:视图类 import 测试接口:前台在请求头携带认证信息,且默认规范用

    1.2K10

    DjangoRestFrameworkApi如何鉴权

    但是实际生产过程,我们通常需要根据业务需求对不同接口进行权限校验。 今天我们就来入门DjangoRestFramework接口鉴权。...2、快速开始 2.1、视图中使用permission_classes控制 第一种方式,我们可以直接在视图类(函数)中指定permission_classes对当前接口进行访问控制。...permission_classes=IsAuthenticated,代表当前接口需要经过认证才能访问。...dj0/urls.py 增加rest_framework认证路由 from django.contrib import admin from django.urls import path,include...2.2、全局配置 当我们想要对全局接口都进行认证控制时,我们对每个接口都进行配置,显然不够合理。此时我们只需要对应用进行全局配置即可。 接口permission_classes就不需要了。

    1.6K20

    Django实践-10RESTful架构和DRF入门

    文件问题 django配置app静态文件步骤 Django多APP加载静态文件 django.short包参考: 中间件应用 Django 前后端分离(REST Framework)...使用入门 参考:https://www.django-rest-framework.org/ Django项目中,如果要实现REST架构,即将网站资源发布成REST风格API接口,可以使用著名三方库...注释掉views.py原show_subjects函数,添加如下内容 from django.contrib.auth.models import User, Group from rest_framework...步骤如下: 1.安装依赖 2.settings.pyINSTALLED_APPS注册rest_framework并配置 REST_FRAMEWORK 相关 3.polls2添加序列化模块serializer.py...4.polls2views.py添加restful风格函数 5.urls.py配置url映射 6.static/html中新建前端页面 7.运行测试

    30821

    Django REST framwork权限验证实例

    在这里插入代码片# Django REST framwork权限验证 一、用户是否登录 (1)判断用户是否登录; permission_classes = (IsAuthenticated, )...注意:permission_classes设置是:验证是用户是否登录、用户是否可以操作该数据等权限; 权限组合方式,目前支持:与&(and) 或|(or) 非~(not) 例如:permission_classes...(2)接口中,添加数据权限验证; class UserFavViewset(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin...类变量 传递授权类, 1、请求要进行某个操作时候 – 2、传递参数将授权类列表多个授权类实例化得到实例化对象- 3、调用所有授权实例对象has_、permission以及has_object_permission...以上这篇Django REST framwork权限验证实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.2K10
    领券