Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DjangoRestFramework的Api如何鉴权

DjangoRestFramework的Api如何鉴权

作者头像
Python研究所
发布于 2022-06-27 06:52:28
发布于 2022-06-27 06:52:28
1.7K00
代码可运行
举报
文章被收录于专栏:大飞的部落阁大飞的部落阁
运行总次数:0
代码可运行

1、前言

上篇文章,我们初步认识了DjangoRestFramework的安装和使用,已经具备快速开发Restful风格的接口了。但是在实际的生产过程中,我们通常需要根据业务需求对不同的接口进行权限的校验。

今天我们就来入门DjangoRestFramework的接口鉴权。

2、快速开始

2.1、在视图中使用permission_classes控制

第一种方式,我们可以直接在视图类(函数)中指定permission_classes对当前接口进行访问控制。

常用的控制类型:

  1. IsAuthenticated
  2. IsAdminUser
  3. IsAuthenticatedOrReadOnly

我们这里使用IsAuthenticated作为演示,这个权限标识经过认证的用户都有权限访问。

app0/views.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
from rest_framework import permissions
from rest_framework.response import Response
from rest_framework.views import APIView
​
class MyView(APIView):
    permission_classes = [permissions.IsAuthenticated]
    def get(self, request, *args, **kwargs):
        print(request)
        return Response("Get information successfully!")

如上,需要鉴权的视图类(函数)继承了APIView,类似上节的PersonViewSet集成了ModelViewSet一样,我们使用DjangoRestFramework都是集成了它已有的功能;我们在视图类中指定了permission_classes=IsAuthenticated,代表当前接口需要经过认证才能访问。

dj0/urls.py

增加rest_framework的认证路由

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.contrib import admin
from django.urls import path,include
from app0 import views
​
urlpatterns = [
    path('admin/', admin.site.urls),
    path('app0/', include('app0.urls')),
    path('',views.hi),
    path('api-auth/', include('rest_framework.urls'))  # add
    ]

app0/urls.py

增加app0/info/接口的路由

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.urls import path
​
from . import views
from rest_framework.routers import DefaultRouter
​
router = DefaultRouter()  # 可以处理视图的路由器
router.register('person', views.PersonViewSet)  # 向路由器中注册视图集
​
app_name='app0'
urlpatterns = [
    path('', views.v1,name='app0index'),
    path('hi', views.hi,name='hi'),
    path('info/', views.MyView.as_view()), ## add
]
urlpatterns += router.urls

默认的DjangoRestFramework是使用了DjangoAdmin的用户权限的。

我们直接访问(未登录):http://localhost:8989/app0/info/

我们点击右上角login使用admin用户登录后:

我们可以清楚的看到,认证后已经可以拿到接口的正常响应了。

以上,我们仅对app0/info/接口进行的权限控制,其他接口都是放开的。

访问:http://localhost:8989/app0/person/

从右上角的login我们可以确定这个接口是不用登陆也能访问的,即开放的。

2.2、全局配置

当我们想要对全局的接口都进行认证控制时,我们对每个接口都进行配置,显然不够合理。此时我们只需要对应用进行全局配置即可。

接口中的permission_classes就不需要了。

dj0/settings.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
STATIC_URL = '/static/'
# 以下为新增
REST_FRAMEWORK = {
 'DEFAULT_PERMISSION_CLASSES': (
  'rest_framework.permissions.IsAuthenticated',
 )
}

以上配置就可以实现全局的接口访问控制,即所有接口都需要认证后才能进行访问。

再次访问:http://localhost:8989/app0/person/

登录后再次访问:http://localhost:8989/app0/person/

3、最后

以上就是使用DjangoRestFramework进行接口权限校验的入门知识,如果你想快速的开发出一个具备CRUD和权限认证功能的后端服务,那么DjangoRestFramework将会是你不二的选择。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django REST Framework JWT Auth TOKEN
http://getblimp.github.io/django-rest-framework-jwt/
Autooooooo
2020/11/09
8580
Django REST Framework JWT Auth TOKEN
DRF框架学习(四)
重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。
小闫同学啊
2019/07/18
3K0
Django Rest Framework
https://q1mi.github.io/Django-REST-framework-documentation/
vanguard
2020/07/07
2.4K0
快用Django REST framework写写API吧
Django默认是前后端绑定的,提供了Template和Form,现在流行前后端分离项目,Python大佬坐不住了,于是便有了Django REST framework:https://github.com/tomchristie
dongfanger
2020/12/18
1.1K0
快用Django REST framework写写API吧
Django REST 框架详解 09 | 权限组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第二步进行权限组件调用
白墨石
2021/01/12
1.3K0
构建强大的API-Django中的REST框架探究与实践
在当今的Web开发中,构建强大的API已经成为了不可或缺的一部分。而在Python领域,Django框架提供了强大的REST框架,为开发者提供了一种高效、灵活的方式来构建和管理API。本文将深入探讨Django中REST框架的使用,并通过代码实例和解析来展示其强大之处。
一键难忘
2024/05/08
8880
JWT-配置与使用
1.jwt的安装配置 . 1.1安装JWT pip install djangorestframework-jwt==1.11.0 1.2 settings.py配置jwt载荷中的有效期设置 # jwt载荷中的有效期设置 JWT_AUTH = { # 1.token前缀:headers中 Authorization 值的前缀 'JWT_AUTH_HEADER_PREFIX': 'JWT', # 2.token有效期:一天有效 'JWT_EXPIRATION_DELTA': d
huofo
2022/03/18
1.3K0
JWT-配置与使用
3. DRF进阶之DRF视图和常用功能
APIView:DRF提供的所有视图的基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能
alexhuiwang
2023/01/16
5.1K0
python测试开发django-62.基于类的视图(APIView和View)
django中编辑视图views.py有两种方式,一种是基于类的实现,另外一种是函数式的实现方式,两种方法都可以用。 REST框架提供了一个APIView类,它是Django View类的子类。
上海-悠悠
2019/09/16
1.5K0
python测试开发django-62.基于类的视图(APIView和View)
Django进阶:DRF(Django REST framework)
DRF即Django REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API。简单来说:通过DRF创建API后,就可以通过HTTP请求来获取、创建、更新或删除数据(CRUD)。
一只大鸽子
2023/09/02
7800
Django进阶:DRF(Django REST framework)
Python进阶42-drf框架(四)
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
1.7K0
Python进阶42-drf框架(四)
从入门到"精通"Django REST Framework-(四)
APIView 是 Django REST Framework (DRF) 中提供的基础视图类,继承自 Django 的 View 类,但针对 RESTful API 进行了扩展。它支持以下功能:
rxg456
2025/02/27
1400
从入门到"精通"Django REST Framework-(四)
python测试开发django-63.基于函数的视图(@api_view())
上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图。它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Django一般的HttpRequest)对象,并且返回Response(而不是Django的HttpResponse)对象,同时允许你设置这个请求的处理方式。
上海-悠悠
2019/09/17
2.5K0
python测试开发django-63.基于函数的视图(@api_view())
python测试开发django-61.权限认证(permission)
用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了。
上海-悠悠
2019/09/17
2.1K0
python测试开发django-61.权限认证(permission)
Django REST Framework-如何使用视图集(二)
下面是一个完整的 DRF 视图集示例,包括定义视图集、注册视图集、定制视图集操作等:
玖叁叁
2023/04/25
9480
8.寻光集后台管理系统-用户管理(增删改查)
在完成了登录和注册视图之后,需求中还需要管理员可以管理用户列表,所以就需要完成基础的增删改查操作
zx钟
2022/12/02
2K0
8.寻光集后台管理系统-用户管理(增删改查)
教你 10 分钟构建一套 RESTful API 服务( Django篇 )
前面用了两篇文章,分别用 Java + Spring Boot 和 Python + Flask 在本地构建了一套 RESTful API 服务
AirPython
2020/06/29
6.9K1
Django REST framework 的快速入门教程
创建一个新的Django项目,叫做 tutorial,然后开始一个新的app叫做 quickstart。
菲宇
2019/06/13
1.5K0
DjangoRestFramework,认证组件、权限组件、频率组件、url注册器、响应器、分页组件
    我们知道,我们不管路由怎么写的,对应的视图类怎么写的,都会走到dispatch方法,进行分发,
changxin7
2019/12/20
6380
DjangoRestFramework,认证组件、权限组件、频率组件、url注册器、响应器、分页组件
Django rest framework源码分析(2)----权限
添加权限 (1)API/utils文件夹下新建premission.py文件,代码如下: message是当没有权限时,提示的信息 # utils/permission.py class SVIPPremission(object): message = "必须是SVIP才能访问" def has_permission(self,request,view): if request.user.user_type != 3: return False
zhang_derek
2018/04/11
9360
Django rest framework源码分析(2)----权限
相关推荐
Django REST Framework JWT Auth TOKEN
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验