用户接口

认证-权限-频率组件

送分小仙女□ 提交于 2019-12-05 15:50:35
认证 源码分析 """ # 还是一如既往的dispatch作为入口函数. 1)APIView的dispath(self, request, *args, **kwargs) 2)dispath方法内 self.initial(request, *args, **kwargs) 进入三大认证 # 认证组件:校验用户 - 游客、合法用户、非法用户 # 游客:代表校验通过,直接进入下一步校验(权限校验) # 合法用户:代表校验通过,将用户存储在request.user中,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常,返回403权限异常结果 self.perform_authentication(request) # 权限组件:校验用户权限 - 必须登录、所有用户、登录读写游客只读、自定义用户角色 # 认证通过:可以进入下一步校验(频率认证) # 认证失败:抛出异常,返回403权限异常结果 self.check_permissions(request) # 频率组件:限制视图接口被访问的频率次数 - 限制的条件(IP、id、唯一键)、频率周期时间(s、m、h)、频率的次数(3/s) # 没有达到限次:正常访问接口 # 达到限次:限制时间内不能访问,限制时间达到后,可以重新访问 self.check_throttles(request) 3) 认证组件

drf的三大认证

自作多情 提交于 2019-12-05 15:18:11
目录 三大认证任务分析 auth组件的认证权限六表 自定义User表分析 源码分析 认证与权限工作原理 源码分析 认证模块工作原理 权限模块工作原理 admin关联自定义用户表 自定义认证、权限类 用户群查接口权限分析 自定义认证类 认证类的认证核心规则 自定义权限类 前后台分离登陆接口 三大认证任务分析 认证模块:校验用户是是否登陆 self.perform_authentication(request) 权限模块:校验用户是否拥有权限 self.check_permissionsn(request) 频率模块:访问接口的次数在设定的时间范围内是否过快(配置访问频率、缓存计次、超次后需要等待的时间) self.check_throttles(request) auth组件的认证权限六表 也就是基于角色的访问控制:基于角色的访问控制( RBAC )是实施面向企业安全策略的一种有效的访问控制方式。 Django框架采用的是RBAC认证规则,RBAC认证规则通常会分为 三表规则、五表规则,Django采用的是六表规则 三表:用户表、角色表、权限表 五表:用户表、角色表、权限表、用户角色关系表、角色权限关系表 六表:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户权限关系表 举个栗子:看图说话 所以我们需要建立关联表(python中是六张表) 我们在实际开发中可能要重写六表

ATM + 购物车

元气小坏坏 提交于 2019-12-05 15:01:58
ATM + 购物车 conf存放配置文件 import osBASE_PATH = os.path.dirname(os.path.dirname(__file__))# 拼接db目录路径DB_PATH = os.path.join(BASE_PATH, 'db')​"""logging配置"""​# 定义三种日志输出格式 开始standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \ '[%(levelname)s][%(message)s]' # 其中name为getlogger指定的名字​simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'​id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'​# 定义日志输出格式 结束logfile_dir = os.path.join(BASE_PATH, 'log') # log文件的目录​logfile_name = 'atm_shop_log.log' # log文件名​#

【转】单点登录的三种实现方式

孤街醉人 提交于 2019-12-05 13:49:20
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因此要点也就以下两个: 存储信任 验证信任 如果一个系统做到了开头所讲的效果,也就算单点登录,单点登录有不同的实现方式,本文就罗列我开发中所遇见过的实现方式。 以Cookie作为凭证媒介 最简单的单点登录实现方式,是使用cookie作为媒介,存放用户凭证。 用户登录父应用之后,应用返回一个加密的cookie,当用户访问子应用的时候,携带上这个cookie,授权应用解密cookie并进行校验,校验通过则登录当前用户。 Auth via cookie 不难发现以上方式把信任存储在客户端的Cookie中,这种方式很容易令人质疑: Cookie不安全 不能跨域实现免登 对于第一个问题,通过加密Cookie可以保证安全性,当然这是在源代码不泄露的前提下。如果Cookie的加密算法泄露

小程序模板消息下线快开启订阅消息功能

不打扰是莪最后的温柔 提交于 2019-12-05 13:07:57
小程序模板消息能力在帮助小程序实现服务闭环的同时,也存在一些问题,如: 1. 部分开发者在用户无预期或未进行服务的情况下发送与用户无关的消息,对用户产生了骚扰; 2. 模板消息需在用户访问小程序后的 7 天内下发,不能满足部分业务的时间要求。 为提升小程序模板消息能力的使用体验,我们对模板消息的下发条件进行了调整,由用户自主订阅所需消息。 一次性订阅消息 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。 (一次性订阅示例) 长期性订阅消息 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。 目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。 调整计划 小程序订阅消息接口上线后,原先的模板消息接口将停止使用,详情如下: 1. 开发者可登录小程序管理后台开启订阅消息功能,接口开发可参考文档: 《小程序订阅消息》 2. 开发者使用订阅消息能力时,需遵循运营规范,不可用奖励或其它形式强制用户订阅,不可下发与用户预期不符或违反国家法律法规的内容。具体可参考文档

小程序模板消息下线快开启订阅消息功能

主宰稳场 提交于 2019-12-05 13:04:58
小程序模板消息能力在帮助小程序实现服务闭环的同时,也存在一些问题,如: 1. 部分开发者在用户无预期或未进行服务的情况下发送与用户无关的消息,对用户产生了骚扰; 2. 模板消息需在用户访问小程序后的 7 天内下发,不能满足部分业务的时间要求。 为提升小程序模板消息能力的使用体验,我们对模板消息的下发条件进行了调整,由用户自主订阅所需消息。 一次性订阅消息 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。 (一次性订阅示例) 长期性订阅消息 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。 目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。 调整计划 小程序订阅消息接口上线后,原先的模板消息接口将停止使用,详情如下: 1. 开发者可登录小程序管理后台开启订阅消息功能,接口开发可参考文档: 《小程序订阅消息》 2. 开发者使用订阅消息能力时,需遵循运营规范,不可用奖励或其它形式强制用户订阅,不可下发与用户预期不符或违反国家法律法规的内容。具体可参考文档

大白话五种IO模型

試著忘記壹切 提交于 2019-12-05 09:33:41
目录 一、I/O模型介绍 二、阻塞I/O模型 2.1 一个简单的解决方案 2.2 该方案的问题 2.3 改进方案 2.4 改进后方案的问题 三、非阻塞式I/O模型 3.1 非阻塞I/O实例 四、I/O多路复用模型 4.1 select/poll模型 4.2 epoll模型(了解) 五、信号驱动I/O模型(了解) 六、异步I/O模型 七、I/O模型比较分析 一、I/O模型介绍 为了更好地了解I/O模型,我们需要事先回顾下: 同步、异步、阻塞、非阻塞 同步(synchronous) I/O和异步(asynchronous) I/O,阻塞(blocking) I/O和非阻塞(non-blocking)I/O分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous I/O和non-blocking I/O是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。 本文讨论的背景是Linux环境下的network I/O。本文最重要的参考文献是Richard Stevens的“UNIX® Network Programming Volume 1, Third EditI/On: The Sockets Networking ”,6

【软件工程】Snug接口文档

倾然丶 夕夏残阳落幕 提交于 2019-12-05 08:27:32
目录 1. 登入 2. 注册 3. 用户信息 4. 用户自定义任务 5. 查看任务 6. 待定 目录 1. 登入 接口功能 实现用户登入功能 URL http://47.95.240.12/api/login 支持格式 JSON HTTP请求方式 POST 请求参数 参数 必选 类型 说明 telephone ture string 手机号 password true string 密码 返回字段 返回字段 字段类型 说明 msg string 返回结果状态。ok:正常;false:错误。 name string 用户名 telephone string 用户手机号 id int 用户ID 接口示例 //请求 { "telephone":"111", "password":"111" } //返回 { "msg": "ok", "data": { "name": "cqq", "telephone": "111", "id": 12 } } 2. 注册 接口功能 实现用户注册功能 URL http://47.95.240.12/api/register 支持格式 JSON HTTP请求方式 POST 请求参数 参数 必选 类型 说明 name ture string 用户名 telephone true string 用户手机号 password true string 用户密码

Linux防火墙firewalld安全设置

爷,独闯天下 提交于 2019-12-05 06:29:53
背景描述 防火墙是具有很好的保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。在公司里数据安全是最重要的,要求安全部门进行全公司进行服务器防火墙安全搭建,在原有的基础上进行安全的防火墙设置,大多数生产环境都建议开启,这样才能有效避免安全隐患等问题;本文文字偏多,但是建议大家还是花个十多分钟好好看一下防火墙的原理,这样便于后期问题排查,最后一小节也会有常用命令操作。 主要内容 1 详细了解防火墙相关配置; 2 详细解读相关安全配置方法; 3 详细解读firewalld防火墙的基础知识; 4 了解firewalld防火墙的配置; 5 了解firewalld防火墙相关命令的使用。 1.Linux防火墙概述 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性。它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。它可以根据网络传输的类型决定IP包是否可以传进或传出内部网。 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而保护网络的安全。 Linux系统的防火墙功能是由内核实现的。在2.4 版及以后的内核中,包过滤机制是netfilter.CentOS

在 ASP.NET Core 项目中使用 MediatR 实现中介者模式

南楼画角 提交于 2019-12-05 05:21:44
在 ASP.NET Core 项目中使用 MediatR 实现中介者模式 一、前言 #    最近有在看 DDD 的相关资料以及微软的 eShopOnContainers 这个项目中基于 DDD 的架构设计,在 Ordering 这个示例服务中,可以看到各层之间的代码调用与我们之前传统的调用方式似乎差异很大,整个项目各个层之间的代码全部是通过注入 IMediator 进行调用的,F12 查看源码后可以看到该接口是属于 MediatR 这个组件的。既然要照葫芦画瓢,那我们就先来了解下如何在 ASP.NET Core 项目中使用 MediatR 。   代码仓储: https://github.com/Lanesra712/grapefruit-common/tree/master/sample/aspnetcore/aspnetcore-mediatr-tutorial 二、Step by Step #    MediatR 从 github 的项目主页上可以看到作者对于这个项目的描述是基于中介者模式的 .NET 实现,是一种基于进程内的数据传递。也就是说这个组件主要实现的是在一个应用中实现数据传递,如果想要实现多个应用间的数据传递就不太适合了。从作者的 github 个人主页上可以看到,他还是 AutoMapper 这个 OOM 组件的作者,PS,如果你想要了解如何在 ASP