Framework

OAuth 2.0

人走茶凉 提交于 2021-01-21 07:56:31
The OAuth 2.0 Authorization Framework OAuth 2.0授权框架支持第三方支持访问有限的HTTP服务,通过在资源所有者和HTTP服务之间进行一个批准交互来代表资源者去访问这些资源,或者通过允许第三方应用程序以自己的名义获取访问权限。 为了方便理解,可以想象OAuth2.0就是在用户资源和第三方应用之间的一个中间层,它把资源和第三方应用隔开,使得第三方应用无法直接访问资源,从而起到保护资源的作用。 为了访问这种受保护的资源,第三方应用(客户端)在访问的时候需要提供凭证。即,需要告诉OAuth2.0你是谁你要做什么。 你可以将用户名和密码告诉第三方应用,让第三方应用直接以你的名义去访问,也可以授权第三方应用去访问。 可以联想一下微信公众平台开发,在微信公众平台开发过程中当我们访问某个页面,页面可能弹出一个提示框应用需要获取我们的个人信息问是否允许,点确认其实就是授权第三方应用获取我们在微信公众平台的个人信息。这里微信网页授权就是使用的OAuth2.0。 1. Introduction 在传统的client-server认证模型中,客户端通过提供资源所有者的凭证来请求服务器访问一个受限制的资源(受保护的资源)。为了让第三方应用可以访问这些受限制的资源,资源所有者共享他的凭证给第三方应用。 1.1. Roles OAuth定义了四种角色:

Django rest framework----认证

≡放荡痞女 提交于 2021-01-19 09:52:09
Django rest framework----认证 先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV CBV(class base views) 就是在视图里使用类处理请求。 对应的还有 FBV(function base views) 就是在视图里使用函数处理请求。 基于反射实现根据请求方式不同,执行不同的方法 原理:url-->view方法-->dispatch方法(反射执行其它方法:GET/POST/PUT/DELETE等等) CBV(class base views) 就是在视图里使用类处理请求。 Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性 如果我们要写一个处理GET方法的view,用函数FBV写的话是下面这样。 from django.http import

Django REST framework基础:认证、权限、限制

試著忘記壹切 提交于 2021-01-19 09:49:08
Django REST framework基础:认证、权限、限制 认证、权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制。然后 权限 和 限制 组件决定是否拒绝这个请求。 简单来说就是: 认证确定了你是谁 权限确定你能不能访问某个接口 限制确定你访问某个接口的频率 认证 REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案。 接下类我们就自己动手实现一个基于Token的认证方案: 自定义Token认证 表 定义一个用户表和一个保存用户Token的表: class UserInfo(models.Model): username = models.CharField(max_length=16 ) password = models.CharField(max_length=32 ) type = models.SmallIntegerField( choices =((1, ' 普通用户 ' ), (2, ' VIP用户 ' )), default =1 ) class Token(models.Model): user = models.OneToOneField(to= ' UserInfo ' ) token_code = models.CharField(max_length=128)

Django rest framework 的认证流程(源码分析)

陌路散爱 提交于 2021-01-19 07:36:59
一、基本流程举例: urlpatterns = [ url(r ' ^admin/ ' , admin.site.urls), url(r ' ^users/ ' , views.HostView.as_view()), ] urls from rest_framework.views import APIView from rest_framework.response import Response class HostView(APIView): def dispatch(self, request, *args, ** kwargs): """ 请求到来之后,都要执行dispatch方法,dispatch方法根据请求方式不同触发 get/post/put等方法 注意:APIView中的dispatch方法有好多好多的功能 """ return super().dispatch(request, *args, ** kwargs) def get(self, request, *args, ** kwargs): return Response( ' GET请求,响应内容 ' ) def post(self, request, *args, ** kwargs): return Response( ' POST请求,响应内容 ' ) def put(self, request

Django Rest Framework(认证、权限、限制访问频率)

倖福魔咒の 提交于 2021-01-19 07:28:19
一、 认证和授权 a. 用户url传入的token认证 from django.conf.urls import url, include from web.viewsimport TestView urlpatterns = [ url(r ' ^test/ ' , TestView.as_view()), ] urls.py # !/usr/bin/env python # -*- coding:utf-8 -*- from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.authentication import BaseAuthentication from rest_framework.permissions import BasePermission from rest_framework.request import Request from rest_framework import exceptions token_list = [ ' sfsfss123kuf3j123 ' , ' asijnfowerkkf9812 ' , ] class TestAuthentication

django Rest Framework----认证/访问权限控制/访问频率限制 执行流程 Authentication/Permissions/Throttling 源码分析

心不动则不痛 提交于 2021-01-19 07:14:31
url: url(r ' books/$ ' ,views.BookView.as_view({ ' get ' : ' list ' , ' post ' : ' create ' })) 为例 当django启动的时候,会调用执行view.BookView.as_view()方法,拿到as_view的返回值view url(r ' books/$ ' ,View.view) 当用户访问books/的时候,会执行View.view(). 执行APIView.dispatch() 当用户访问books/时,django拿到request,然后对request进行了重新封装 并且进行用户认证 url(r ' books/$ ' ,View.view) ---> 执行 self.dispatch() APIView.dispatch() def dispatch(self, request, *args, ** kwargs): ... request = self.initialize_request(request, *args, ** kwargs) self.request = request try : self.initial(request, *args, ** kwargs) .... request = self.initialize_request(request,

红队武器库-网络安全人员必备

穿精又带淫゛_ 提交于 2021-01-18 06:00:01
包含内容: 侦察 武器化 投递 命令与控制 横向移动 建立立足点 提权 数据传输 杂项 内容很不错,建议转发朋友圈作为存档。 侦察 主动情报收集 EyeWitness is designed to take screenshots of websites, provide some server header info, and identify default credentials if possible. https://github.com/ChrisTruncer/EyeWitness AWSBucketDump is a tool to quickly enumerate AWS S3 buckets to look for loot. https://github.com/jordanpotti/AWSBucketDump AQUATONE is a set of tools for performing reconnaissance on domain names. https://github.com/michenriksen/aquatone spoofcheck a program that checks if a domain can be spoofed from. The program checks SPF and DMARC records for

Flutter技术在会展云中大显身手

半城伤御伤魂 提交于 2021-01-15 01:43:04
导读 在《会展云技术解读》专题中,我们先发推出了4篇文章,分别从_ 安全 、 设计 、 智能推荐系统 、 移动监控 _等维度深入解读会展云背后的技术能力: **🔗 ** 安全篇——多重安全保障护航云上会展 **🔗 ** 设计篇——基于服务设计的线上展览 **🔗 ** 智能推荐篇——深度解读智能推荐系统搭建之路 **🔗 ** 移动监控篇——面对突发事故,APP如何做好崩溃分析与性能监控? 会展云解决方案覆盖了_ 业务 , 技术 , 平台 , 应用 _四个层面,业务层面提供科技感十足的云上展厅、多种模式的论坛会议等;应用层面有多种解决方案,直播解决方案、视频会议解决方案、移动研发解决方案等;技术层面依托海量弹性云计算能力和充足可扩展的云存储及带宽资源,集成了多种京东中台平台的能力,有技术中台、数据中台、智能中台及业务中台能力,可快速响应前台应用的需求。 作为云上展会,最终呈现给广大参会者的对外窗口必然是网站、APP、H5、小程序等线上系统,移动开发必然是重中之重。 众所周知,_ Flutter是谷歌公司提供的跨平台UI工具包,支持跨Android、iOS等多个平台复用代码,同时允许应用程序直接与基础平台的服务交互。 _其设计目的是使开发人员能够在不同平台上尽量复用代码,交付高性能的应用。 作为可扩展的分层系统,Flutter有一系列独立的库,每一个库都依赖于更底层的库。对于操作系统来说

多模态阅读笔记 Noise Estimation Using Density Estimation for Self-Supervised Multimodal Learning

|▌冷眼眸甩不掉的悲伤 提交于 2021-01-14 17:18:55
Noise Estimation Using Density Estimation for Self-Supervised Multimodal Learning 这篇文件讲的是, 按照现有多模态的任务, 往往会 出现噪音的问题 , 噪声 使得模型一直得不到最好结果, 而这篇文章提出一个去噪方法,自监督的去训练一个去噪模块来消除噪声, 实验结果显示, 用此方法, 能够直接提高 VQA, Text-To-Video Retrieval 等任务的表现 本文贡献 证明多模态噪声的消除任务 可以归结为 多模态密度估计任务 提出一个模块用于学习一个抗噪声能力强的表示 并且变成一个 max margin ranking loss function. 通过HowTo100M dataset 进行自监督训练如何去噪 , 然后用于5个任务, 结果可以发现进行提升 本文相关工作 Density Estimation: 密度估计 假设我们有一组来自未知密度函数的观察到的数据点,我们的目标是从观测到的数据估计他们的 概率密度函数 参数或半参数方法 非参数方法 密度估计理论(部分)_sinat_31184961的博客-CSDN博客_密度估计 自监督学习 一文读懂自监督学习_zandaoguang的博客-CSDN博客_自监督学习 多模态表示学习 joint representation 联合表示

DRF序列化和反序列化(一:Serializer)

泄露秘密 提交于 2021-01-14 06:51:46
一:表关系如下 from django.db import models # Create your models here. __all__=['Book','Publisher','Authon'] class Book(models.Model): title =models.CharField(max_length=32,verbose_name='图书名称') CHOICES=((1,'python'),(2,'go'),(3,'linux')) category=models.IntegerField(choices=CHOICES,verbose_name='图书类别') pub_time=models.DateTimeField(verbose_name='出版日期') authon=models.ManyToManyField('Authon') publisher=models.ForeignKey(to='Publisher',on_delete=None) def __str__(self): return self.title class Authon(models.Model): name= models.CharField(max_length=32, verbose_name='作者姓名') def __str__(self): return