ramework —— auth认证

1.目录结构

  

2.urls.py

from django.conf.urls import url
from django.contrib import admin
from app02 import views as app02_viewurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^hosts/',app02_view.HostView.as_view()),url(r'^auth/$',app02_view.AuthView.as_view())
]

3.models.py

from django.db import models# Create your models here.class Userinfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)token = models.CharField(max_length=64,null=True)

4.views.py

from django.shortcuts import render,HttpResponse
from rest_framework.views import  APIView
from rest_framework.request import Request
from rest_framework.exceptions import APIException
from rest_framework.response import Response
import time
import hashlib
# Create your views here.from app02 import models# class MyAuthentication(object):
#     def authenticate(self,request):
#         token = request.query_params.get('token')
#         if token == 'ASSDSA':
#             return ('uuuuuuuuuuu','aaaaaaaaaaa')
#         raise  APIException('认证失败')class AuthView(APIView):authentication_classes = []def get(self,request):'''接收用户名和密码:param request::return:'''ret ={"code":1000,"msg":None}user = request.query_params.get('user')pwd = request.query_params.get('pwd')user_obj = models.Userinfo.objects.filter(username=user,password=pwd).first()if not user_obj:ret['code'] = 1001ret['msg'] = "用户名或密码错误"return  Response(ret)#创建随机字符串ctime = time.time()key = "%s|%s"%(user,pwd)m = hashlib.md5()m.update(key.encode('utf-8'))token = m.hexdigest()#保存到数据user_obj.token = tokenuser_obj.save()ret['token'] = tokenreturn Response(ret)class HostView(APIView):def get(self,request,*args,**kwargs):self.dispatchprint(request.user)print(request.auth)return Response('主机列表')

View Code

5.utils.py

from django.shortcuts import render,HttpResponse
from rest_framework.views import  APIView
from rest_framework.request import Request
from rest_framework.exceptions import APIException
from rest_framework.response import Response
from app02 import modelsclass MyAuthentication(object):def authenticate(self,request):token = request.query_params.get('token')obj = models.Userinfo.objects.filter(token=token).first()if obj:return obj(obj.username,obj)raise  APIException('用户认证认证失败')

6.settings.py

REST_FRAMEWORK = {'UNAUTHENTICATED_USER': None,'UNAUTHENTICATED_TOKEN': None,"DEFAULT_AUTHENTICATION_CLASSES": ["app02.utils.MyAuthentication",],
}

转载于:https://www.cnblogs.com/zhongbokun/p/8419021.html

framework —— auth认证相关推荐

  1. 源码剖析Django REST framework的认证方式及自定义认证

    源码剖析Django REST framework的认证方式 由Django的CBV模式流程,可以知道在url匹配完成后,会执行自定义的类中的as_view方法. 如果自定义的类中没有定义as_vie ...

  2. Laravel 5.5 使用 Passport 实现 Auth 认证

    最近在写一个前后端分离项目,本来想用 Jwt-auth + Dingo 开发的,但是略感笨重,于是想到了 Laravel 的 Passport 和 5.5 新出的 Api Resource.Larav ...

  3. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  4. 4种Spring Boot 实现通用 Auth 认证方式

    摘要: 文章介绍了 spring-boot 中实现通用 auth 的四种方式,包括传统 AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下它们的执行顺序. 本文分享自华为云社 ...

  5. Redis 远程连接( redis.conf 配置 auth 认证 重启 redis)

    零.所用环境 1.本地 macOS 10.14.5 2.远程服务器 Ubuntu 16.04 一.修改redis.conf(bind 0.0.0.0 & auth 认证) 1.找到 redis ...

  6. Rest Api 项目添加 Basic Auth 认证

    title: Rest Api 项目添加 Basic Auth 认证 date: 2022-10-10 22:09 tags: [Java,Spring Boot,Rest Api,Basic Aut ...

  7. 【Python3爬虫(二)】【urlib.request模块】【付费代理+auth认证】

    上一篇:[Python3爬虫(一)][urlib.request模块][urlopen+get请求加参数+header请求头+User-Agent+IP代理] ++++++++++开始线+++++++ ...

  8. java httpClient Digest Auth 认证

    技术交流QQ群 933925017 java httpClient Digest Auth 认证 因为项目需要,请求海康摄像头,进行抓图以及云台控制等功能, 海康有http协议,但是需要进行请求头认证 ...

  9. csrf跨站请求伪造,CBV添加装饰器,auth认证模块,基于django中间件设计项目功能

    文章目录 csrf跨站请求伪造 csrf的定义 csrf的分类 csrf的攻击过程 csrf的攻击条件 举例说明 Django提供的解决策略 csrf相关装饰器 FBV CBV 方法一(直接在类中的某 ...

最新文章

  1. 微信小程序实现滑动翻页效果源码附效果图
  2. VC MFC界面上显示BMP图片
  3. flavor android build,android BuildType和BuildFlavor
  4. 如何让某些用户对Marketing Cloud的contact数据只能实施只读操作
  5. 报送数据标准校验java_Java:数据校验 - osc_gaqp1a2z的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. Sharding-Sphere,Sharding-JDBC_分库分表(水平分库_水平分表)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记004
  7. screen 命令使用及示例
  8. 吉林建筑大学电气与计算机学院院长,吉林建筑大学电气与计算机学院研究生导师:张玉红...
  9. 常用邮箱SMTP/POP3地址及端口
  10. 顶点计划:辅导员与学生关系讨论
  11. 【3005】拦截导弹问题(noip1999)
  12. 案例|工业物联网解决方案·光伏电站
  13. 华硕飞行堡垒笔记本电脑驱动程序不能使用如何解决
  14. [python爬虫之路day4]:xpath基本知识lxml结合xpath进行数据分析爬取豆瓣电影
  15. 深度学习基础知识(八):神经网络基础之导数
  16. java中求某个时间跳过节假日和周末
  17. 浅谈计通银行机房集中监控系统功能
  18. 拿到一个vue+webpack项目,该如何去看
  19. 在64位Ubuntu 16.04系统里安装Qt 5.9.1
  20. python Matplotlib 绘制多个子图

热门文章

  1. spring3.1声明式事务管理
  2. java关键字transient和volatile的基本含义和使用方法
  3. LeetCode-29:不使用乘法、除法和 mod 运算符如何求解两数之商,真实面试中遇到过
  4. 网站建设页面设计中CSS正确书写
  5. 轻量级linux iso,antiX 17.2 发布,基于Debian的轻量级Linux发行版
  6. 2019-12-17 drivers/clocksource/arm_arch_timer.c
  7. [草稿]尝试从 same.com 的视角观察简书的用户社交网络
  8. iview 下拉select样式_Ant Design 4.0 的一些杂事儿 - Select 篇
  9. kubernetes 客户端client-go 使用及常用api
  10. wamp修改默认80端口