1、drf 的用户认证组件

(1)models

from django.db import models

# Create your models here.

class User(models.Model):

username=models.CharField(max_length=64)

password=models.CharField(max_length=64)

user_type=models.IntegerField(choices=((1,'超级用户'),

(2,'普通用户'),

(3,'的用户')

))

class UserToken(models.Model):

token=models.CharField(max_length=64)

user=models.OneToOneField(to='user',on_delete=models.CASCADE)

(2)urls

from django.contrib import admin

from django.urls import path

from app01 import views

urlpatterns = [

path('admin/', admin.site.urls),

path('test/',views.test.as_view()),

]

(3)MyAuthentication

from rest_framework.authentication import BaseAuthentication

from rest_framework.exceptions import AuthenticationFailed

from app01.models import UserToken

class MyAuthentication(BaseAuthentication):

def authenticate(self, request):

# 认证逻辑 如果认证通过 返回两个值

# 如果认证失败 AuthenticationFailed异常

token=request.GET.get('token')

if token:

user_token=UserToken.objects.filter(token=token).first()

# 认证通过

if user_token:

return user_token.user,token

else:

raise AuthenticationFailed('认证失败')

else:

raise AuthenticationFailed('请求地址中需要携带token')

(4) views

from django.shortcuts import render

import uuid

from app01.models import User

from app01 import models

# Create your views here.

from rest_framework.views import APIView

from app01.app_auth import MyAuthentication

from rest_framework.response import Response

class test(APIView):

def post(self,request):

username=request.data.get('username')

password=request.data.get('password')

user=User.objects.filter(username=username,password=password).first()

if user:

token = uuid.uuid4()

models.UserToken.objects.update_or_create(defaults={'token':token},user=user)

print('当前登录的用户',request.user.username)

return Response({'status':100,'msg':'登录成功','token':token})

else:

return Response({'status':101,'msg':'用户名或密码错误'})

def get(self,request):

return Response({'status':100})

(5)局部配置认证

authentication_classes = [MyAuthentication]

(6)全局配置认证

REST_FRAMEWORK={

"DEFAULT_AUTHENTICATION_CLASSES":["app01.app_auth.MyAuthentication",]

}

python工程师认证证书_python工程师-day83相关推荐

  1. python软件工程师认证证书_Python软件工程师

    岗位要求: 1. 教育背景:本科及以上学历,计算机.数学.电子信息等相关专业,毕业于985/211院校优先: 2. 工作经验:3-8年开发经验: 3.专业要求: (1)熟练Python软件开发能力,能 ...

  2. python工程师认证证书报考条件_Python工程师需要具备什么条件

    很多朋友想知道Python工程师需要什么条件,下面就让我们来看看吧. Python工程师需要的条件 1.掌握Python的基本语法,掌握MySQL的基本用法,掌握Linux的常用命令: 2.掌握web ...

  3. python爬虫工程师认证证书报考条件_Python爬虫工程师要具备怎样的技能

    对于程序员来说基本上不存在重复性的工作,任何重复劳动都可以通过程序自动解决.下面千锋带你一起了解爬虫需要哪些相关的技能. 1.基本的编码基础(至少一门编程语言) 这个对于任何编程工作来说都是必须的.基 ...

  4. 前端和python哪个工作好_Python工程师比前端工程师更好招?

    今天下线了前端招聘贴,部门变动之后的人员组织终于又告一段落了,然而这次Python工程师招聘的速度确实让我惊奇. 从12年开始慢慢负责招聘的事之后,就一直断断续续的帮团队找合适的人才.实话实说,Pyt ...

  5. cad计算机辅助证书,2020CAD工程师认证证书考试试题(01月27日)

    1. [多选题]下面的说法中,()是不正确的. A. 用PLAN命令可以将WCS的XOY面设置为平面视图 B. 用PLAN命令可以将当前的UCS的XOY面设置为平面视图 C. 用PLAN命令可以将任意 ...

  6. python怎么使用证书_Python使用系统SSL证书?

    上周我遇到了最近的Authorize.net SSL证书失效debacle. 我终于让curl接受了他们的证书:$ curl -Iv https://secure.authorize.net ... ...

  7. python技术开发证书_python+证书

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! redirect:根据路由跳转页面render_template:找到并返回ht ...

  8. python网络编程证书_python 网络编程——客户端

    网络通信的基本接口是socket,它扩展了操作系统的基本I/O到网络网络通信.socket可以通过socket()函数来建立,通过connect()函数来连接.得到了socket,可以确定本地和远程端 ...

  9. 注册网络安全等级测评工程师认证培训通知

    网络空间的竞争,归根结底是人才竞争.为提升我国网络安全人才培养能力,缓解网络安全人才供需难题,雨笋教育与方班网安人才教育服务中心开展深度合作并获得授权,联合开发了中国网络空间安全人才教育论坛(网教盟) ...

最新文章

  1. python多线程下载ts_基于Python的ERA-5多线程下载(1)
  2. 单调栈 leetcode整理(一)
  3. python并行计算numpy_【Nature文章摘录】NumPy: 从单机到分布式并行计算
  4. 十分漂亮的视频源码解析
  5. VS2012无法打开文件“kernel32.lib”问题的解决办法
  6. PHP html 转换成PDF wkhtmltopdf HTML 转换成 PDF (JAVA C#都适用)
  7. 【干货】跨端体验度量的思考与实现(含直播回放)
  8. Vue开发实例(01)之环境搭建nodejs与运行第一个Vue项目
  9. 51单片机(1)-开发工具介绍及软件安装
  10. 牛市来了,我劝读者不要炒股他却骂我不地道...
  11. python+pytesseract本地pdf识别转文字,图片识别转文字,避坑大量识别转文字时的内存泄露问题解决
  12. 蛋花花分享人工智能概念的诞生与发展
  13. 你一生中要听的一百首英文电影插曲
  14. 笔记本辐射与日常电器辐射对比
  15. 酒友app软件开源平台
  16. 我的生词表(中文在上,英文在下)(A-Z排序)
  17. 糖尿病足的病症状都有什么呢?
  18. C语言—飞机大战小游戏
  19. 为网站配置免费的HTTPS证书 3-4
  20. word中添加背景色

热门文章

  1. linux socket使用情况 ss -s ss -t -a | cat /proc/net/socketstat
  2. 使用ulimit设置文件最大打开数
  3. C++指针和数组的区别(不能混用的情况)
  4. memcahce文章精选
  5. 女人护肤品可与男人共用! - 健康程序员,至尚生活!
  6. 爱情,是我一生中最虔诚的信仰
  7. WSUS专题之二:部署与规划-参数选择
  8. C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
  9. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
  10. 基于RESTful标准的Web Api