import hashlib

import time
from django.http import HttpResponse key="qwrwertyuiop"
visited_key={
#'key':time
} def api_auth(func):
def inner(request,*args,**kwargs):
server_float_ctime = time.time()
auth_header_val = request.META.get("HTTP_AUTH_API")
client_md5_str, client_ctime = auth_header_val.split("|", maxsplit=1)
client_float_ctime = float(client_ctime)
# 第一关时间
if (client_float_ctime + 10) < server_float_ctime:
return HttpResponse("时间太久了")
# 第二关加密
server_md5_str = md5("%s|%s" % (key, client_ctime,)) if client_md5_str != server_md5_str:
return HttpResponse("休想") # 第三关
if visited_key.get(client_md5_str):
return HttpResponse("you are late") visited_key[client_md5_str] = client_float_ctime return func(request,*args,**kwargs)
return inner def md5(arg):
hs=hashlib.md5() #由于在python3中在update用的是字节类型所以需要把字符串变成字节
hs.update(arg.encode("utf8"))
return hs.hexdigest() @api_auth
def test(request):
# server_float_ctime = time.time()
# auth_header_val=request.META.get("HTTP_AUTH_API")
# client_md5_str,client_ctime=auth_header_val.split("|",maxsplit=1)
# client_float_ctime=float(client_ctime)
# #第一关时间
# if (client_float_ctime+10) < server_float_ctime:
# return HttpResponse("时间太久了")
# # 第二关加密
# server_md5_str = md5("%s|%s" %(key,client_ctime,))
#
# if client_md5_str != server_md5_str:
# return HttpResponse("休想")
#
# #第三关
# if visited_key.get(client_md5_str):
# return HttpResponse("you are late")
# visited_key[client_md5_str]=client_float_ctime
return HttpResponse("正常用户")

  

装饰器api的更多相关文章

  1. odoo API装饰器one、model、multi的区别

    1.one装饰器详解 odoo新API中定义方式:    date=fields.Date(string="date",compute="_get_date") ...

  2. Odoo的@api.装饰器

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281437.html Odoo自带的api装饰器主要有:model,multi,one,constrains, ...

  3. 【转】odoo 新API装饰器中one、model、multi的区别

    http://blog.csdn.net/qq_18863573/article/details/51114893 1.one装饰器详解 odoo新API中定义方式: date=fields.Date ...

  4. odoo10 api 装饰器

    http://www.cnblogs.com/kfx2007/p/3894297.html one:装饰record-style方法中的self为单一实例,被装饰的方法将会在每一条记录中循环调用,返回 ...

  5. [原创]django+ldap实现单点登录(装饰器和缓存)

    前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...

  6. python基础知识7——迭代器,生成器,装饰器

    迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...

  7. Python 第五天 装饰器

    装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. def wrapper(func): def result(): pri ...

  8. python学习笔记-(八)装饰器、生成器&迭代器

    本节课程内容概览: 1.装饰器 2.列表生成式&迭代器&生成器 3.json&pickle数据序列化 1. 装饰器 1.1 定义: 本质上是个函数,功能是装饰其他函数—就是为其 ...

  9. Python装饰器由浅入深

    装饰器的功能在很多语言中都有,名字也不尽相同,其实它体现的是一种设计模式,强调的是开放封闭原则,更多的用于后期功能升级而不是编写新的代码.装饰器不光能装饰函数,也能装饰其他的对象,比如类,但通常,我们 ...

随机推荐

  1. java基础(2)-面向对象(2)

    构造方法 构造方法特点 方法名与类名相同 方法名前没有返回值类型的声明(void也没有) 方法中不能使用return语句返回一个值 创建对象时自动调用并执行 如果类中没有自定义构造方法,则java调用 ...

  2. PAT1022. Digital Library (30)

    两个坑. 一个是一直用的malloc不行了.因为malloc分配的是固定大小,之前做的题没遇到过是因为一般string都不长(malloc分配string为24个Byte),这次直接报段错误,呢们了半 ...

  3. 循环插入一条数据的sql写法

    DECLARE @i INTSET @i = 1WHILE @i > 0 BEGIN DECLARE @TransportFormMstID BIGINT; DECLARE @TradeOrde ...

  4. review01

    .java叫源文件,java编译器编译源文件后会产生字节码文件,java解释器将字节码文件加载进内存,java虚拟机来执行字节码文件. 如下列文件名为“String01.java” public cl ...

  5. FreeDOS 实模式 保护模式

    FreeDOS可以运行在实模式或保护模式下,在启动FreeDOS时有4种运行模式选择: 前两种运行在保护模式下, 后两种运行在实模式下. 根据How to tell whether your CPU ...

  6. 【转】Pearson,Spearman,Kendall相关系数的具体分析

    测量相关程度的相关系数很多,各种参数的计算方法及特点各异. 连续变量的相关指标: 此时一般用积差相关系数,又称pearson相关系数来表示其相关性的大小,积差相关系数只适用于两变量呈线性相关时.其数值 ...

  7. 解决:创建Android模拟器时提示“No system images installed for target”

    今天在Eclipse上创建安卓模拟器,但发现CPU/ABI一项显示为“No system images installed for target”: 在网上搜索答案,在叶超Luka的博客中找到了答案, ...

  8. 使用Spring MVC表单标(转)

    概述     在低版本的Spring中,你必须通过JSTL或<spring:bind>将表单对象绑定到HTML表单页面中,对于习惯了Struts表单标签的开发者来说,Spring MVC的 ...

  9. Angular 4.0 架构详解

    Angular 4.0 架构 这个架构图展现了 Angular 应用中的 8 个主要构造块: 模块 (module) 组件 (component) 模板 (template) 元数据 (metadat ...

  10. 剑指offer--20.矩形覆盖

    链接:https://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6来源:牛客网 @DanielLea 思路分析: ...