framework —— auth认证
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认证相关推荐
- 源码剖析Django REST framework的认证方式及自定义认证
源码剖析Django REST framework的认证方式 由Django的CBV模式流程,可以知道在url匹配完成后,会执行自定义的类中的as_view方法. 如果自定义的类中没有定义as_vie ...
- Laravel 5.5 使用 Passport 实现 Auth 认证
最近在写一个前后端分离项目,本来想用 Jwt-auth + Dingo 开发的,但是略感笨重,于是想到了 Laravel 的 Passport 和 5.5 新出的 Api Resource.Larav ...
- django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...
- 4种Spring Boot 实现通用 Auth 认证方式
摘要: 文章介绍了 spring-boot 中实现通用 auth 的四种方式,包括传统 AOP.拦截器.参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下它们的执行顺序. 本文分享自华为云社 ...
- Redis 远程连接( redis.conf 配置 auth 认证 重启 redis)
零.所用环境 1.本地 macOS 10.14.5 2.远程服务器 Ubuntu 16.04 一.修改redis.conf(bind 0.0.0.0 & auth 认证) 1.找到 redis ...
- Rest Api 项目添加 Basic Auth 认证
title: Rest Api 项目添加 Basic Auth 认证 date: 2022-10-10 22:09 tags: [Java,Spring Boot,Rest Api,Basic Aut ...
- 【Python3爬虫(二)】【urlib.request模块】【付费代理+auth认证】
上一篇:[Python3爬虫(一)][urlib.request模块][urlopen+get请求加参数+header请求头+User-Agent+IP代理] ++++++++++开始线+++++++ ...
- java httpClient Digest Auth 认证
技术交流QQ群 933925017 java httpClient Digest Auth 认证 因为项目需要,请求海康摄像头,进行抓图以及云台控制等功能, 海康有http协议,但是需要进行请求头认证 ...
- csrf跨站请求伪造,CBV添加装饰器,auth认证模块,基于django中间件设计项目功能
文章目录 csrf跨站请求伪造 csrf的定义 csrf的分类 csrf的攻击过程 csrf的攻击条件 举例说明 Django提供的解决策略 csrf相关装饰器 FBV CBV 方法一(直接在类中的某 ...
最新文章
- 微信小程序实现滑动翻页效果源码附效果图
- VC MFC界面上显示BMP图片
- flavor android build,android BuildType和BuildFlavor
- 如何让某些用户对Marketing Cloud的contact数据只能实施只读操作
- 报送数据标准校验java_Java:数据校验 - osc_gaqp1a2z的个人空间 - OSCHINA - 中文开源技术交流社区...
- Sharding-Sphere,Sharding-JDBC_分库分表(水平分库_水平分表)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记004
- screen 命令使用及示例
- 吉林建筑大学电气与计算机学院院长,吉林建筑大学电气与计算机学院研究生导师:张玉红...
- 常用邮箱SMTP/POP3地址及端口
- 顶点计划:辅导员与学生关系讨论
- 【3005】拦截导弹问题(noip1999)
- 案例|工业物联网解决方案·光伏电站
- 华硕飞行堡垒笔记本电脑驱动程序不能使用如何解决
- [python爬虫之路day4]:xpath基本知识lxml结合xpath进行数据分析爬取豆瓣电影
- 深度学习基础知识(八):神经网络基础之导数
- java中求某个时间跳过节假日和周末
- 浅谈计通银行机房集中监控系统功能
- 拿到一个vue+webpack项目,该如何去看
- 在64位Ubuntu 16.04系统里安装Qt 5.9.1
- python Matplotlib 绘制多个子图
热门文章
- spring3.1声明式事务管理
- java关键字transient和volatile的基本含义和使用方法
- LeetCode-29:不使用乘法、除法和 mod 运算符如何求解两数之商,真实面试中遇到过
- 网站建设页面设计中CSS正确书写
- 轻量级linux iso,antiX 17.2 发布,基于Debian的轻量级Linux发行版
- 2019-12-17 drivers/clocksource/arm_arch_timer.c
- [草稿]尝试从 same.com 的视角观察简书的用户社交网络
- iview 下拉select样式_Ant Design 4.0 的一些杂事儿 - Select 篇
- kubernetes 客户端client-go 使用及常用api
- wamp修改默认80端口