基于Django框架的rest_framework的身份验证和权限解析

作者:想成为数据分析师的开发工程师 时间:2021-02-21 23:42:58 

1. 概述

到目前为止,程序的API对任何人都可以编辑或删除,没有任何限制。我们希望有一些更高级的行为,进行身份验证和权限分配,以确保:

  • 数据始终与创建者相关联

  • 只有经过身份验证的用户才能创建数据

  • 只有数据的创建者可以更新或删除未经身份验证的请求

  • 若未经过身份验证只有只读访问权限

2. 使用admin应用的User

  • 配置好settings中的数据库配置

  • 将admin应用的数据库进行迁移

  • 使用 createsuperuser 创建用户

基于Django框架的rest_framework的身份验证和权限解析

给可浏览的API添加登录功能 在根urls中添加:

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
   path('admin/', admin.site.urls),
   path('',include('rest_app.urls')),
   path('api-auth/',include('rest_framework.urls')),
]

说明:

  • api-auth: 可以设置为任意符合规则的路径

  • 再次访问api页面,在页面的右上角会看到登录操作的按钮

基于Django框架的rest_framework的身份验证和权限解析

此时,还是没有做到身份验证的功能

3. 视图中添加权限

from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from rest_app.models import *
from rest_app.app_serializer import StudentSerializer,ClassesSerializer
from django.http import JsonResponse,HttpResponse,Http404
from rest_framework.parsers import JSONParser
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.views import APIView
from rest_framework import mixins, generics
from rest_framework import permissions
# Create your views here.
'''
   新增        post    students/
   删除        delete  students/id/
   修改        put     students/id/
   查询一个    get     students/id/
   查询所有    get     students/
'''
# 优化代码:
class StudentsView(generics.ListCreateAPIView):
   # 指定需要操作的数据与序列化类
   queryset = Student.objects.all()
   serializer_class = StudentSerializer
   # 添加身份验证功能
   permission_classes = [permissions.IsAuthenticatedOrReadOnly]
class StudentDetailView(generics.RetrieveUpdateDestroyAPIView):
   queryset = Student.objects.all()
   serializer_class = StudentSerializer
   # 添加身份验证功能
   permission_classes = [permissions.IsAuthenticatedOrReadOnly]

此时,再次访问页面就无法对其进行操作了,需要登录

基于Django框架的rest_framework的身份验证和权限解析

基于Django框架的rest_framework的身份验证和权限解析

来源:https://blog.csdn.net/m0_63953077/article/details/128175648

标签:Django,验证,权限
0
投稿

猜你喜欢

  • 精致的web设计

    2009-12-04 19:07:00
  • 赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程 <font color=red>原创</font>

    2022-03-02 04:40:53
  • python网络爬虫实现个性化音乐播放器示例解析

    2021-10-06 10:14:51
  • MySql数据库中Select用法小结

    2024-01-22 08:45:42
  • JS实现新建文件夹功能

    2024-04-16 09:50:15
  • sqlserver数据库高版本备份还原为低版本的方法

    2024-01-19 02:29:30
  • JavaScript实现为input与textarea自定义hover,focus效果的方法

    2024-04-10 11:01:18
  • JavaScript省市级联下拉菜单实例

    2024-04-10 16:18:18
  • Python通过4种方式实现进程数据通信

    2023-11-04 15:13:48
  • pandas读取CSV文件时查看修改各列的数据类型格式

    2023-09-26 16:44:58
  • YOLOv5车牌识别实战教程(四)模型优化与部署

    2021-04-22 01:32:27
  • 在ASP中使用SQL语句之12:连接

    2009-04-23 18:27:00
  • Python IDE PyCharm的基本快捷键和配置简介

    2021-09-18 07:08:10
  • js弹出的对话窗口永远保持居中显示

    2024-04-23 09:13:00
  • ASP.NET数据库操作类实例

    2024-01-12 21:01:07
  • 总结Python中逻辑运算符的使用

    2023-01-10 14:54:40
  • 网页制作前台之javascript

    2013-07-23 08:32:59
  • 什么是Python中的顺序表

    2021-07-12 22:17:47
  • CSS高级文字排版的实例

    2009-03-24 20:56:00
  • Alfred + Gitee搭建免费图床的使用实例详解

    2023-10-04 08:24:30
  • asp之家 网络编程 m.aspxhome.com