token

接口幂等性的解决方案

余生长醉 提交于 2020-02-17 09:00:55
接口幂等性的解决方案 在编程中,幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数指的是那些使用相同参数重复执行也能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。比如说getIdCard()函数和setTrue()函数就是幂等函数。 幂等在我的理解里就是,一个操作不论被执行多少次,产生的效果和返回的结果都是一样的。 一个幂等的操作典型如:把编号为5的记录的A字段设置为0这种操作不管执行多少次都是幂等的。 一个非幂等的操作典型如:把编号为5的记录的A字段增加1这种操作显然就不是幂等的。 幂等的方案 1.查询操作:Select是天然的幂等操作。 查询一次和查询多次,在数据不变的情况下,查询的结果都是一样的。 2.删除操作:删除操作也是幂等的,删除一次和删除多次都是把数据删除。 因为删除操作通常是定向的,比如通过id去删除数据,如果该id在数据库中存在对应记录,则删除该记录;如果该id在数据库中不存在对应记录,也是执行的删除记录操作,只是没有实质性地删除到记录而已,却也不会有其他的副作用。 但是如果删除操作具有返回值的话,可能返回的结果会不一样,比如删除一条记录之后返回这条记录中的某个值,如果删除的数据不存在(已经在第一次的删除请求中被删除了),返回的就是空值了。 3.唯一索引

基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

旧巷老猫 提交于 2020-02-16 23:12:33
项目地址: https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + Element 构建项目前端,Node.js + Koa2 + MongoDB + Redis 实现数据库和接口设计,包括邮箱验证码、用户注册、用户登录、查看删除用户等功能。 1. 技术栈 前端 初始化项目: vue-cli3.0 组件库: Element-ui 路由控制/拦截: Vue-router 状态管理: Vuex 服务端 运行环境: Node.js 后台开发框架: Koa2 路由中间件: Koa-router 发送邮件: nodemailer HTTP通讯 接口请求/拦截: Axios Token认证: jsonwebtoken 数据库 MongoDB 数据库操作: Mongoose 缓存工具: Redis 2. 项目依赖: "dependencies": { "axios": "^0.18.0", "crypto-js": "^3.1.9-1", "element-ui": "^2.4.5", "js-cookie": "^2.2.0", "jsonwebtoken": "^8.5.0", "koa": "^2.7.0", "koa-bodyparser": "^4.2

Kubernetes 1.17.2 高可用部署

烂漫一生 提交于 2020-02-16 21:22:59
20.0.0.200 10.0.0.200 bs-k8s-master01 管理节点 2c2g 20.0.0.201 10.0.0.201 bs-k8s-master02 管理节点 2c2g 20.0.0.202 10.0.0.202 bs-k8s-master03 管理节点 2c2g 20.0.0.203 10.0.0.203 bs-k8s-node01 业务节点 2c2g 20.0.0.204 10.0.0.204 bs-k8s-node02 业务节点 2c2g 20.0.0.205 10.0.0.205 bs-k8s-node03 业务节点 2c2g 服务器准备 所有机器 以bs-k8s-master01为例 #关闭selinux/firewalld/iptables [root@bs-k8s-master01 ~]# setenforce 0 \ > && sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config \ > && getenforce l -y iptables-services \ && systemctl stop iptables \ && systemctl disable iptables \ && systemctl status iptablessetenforce:

cube.js 学习 cli 命令

心不动则不痛 提交于 2020-02-16 21:21:54
平时经常用的cube.js 的命令主要是create 实际上还包含了其他方便的命令 create 生成cube.js 的脚手架app 命令使用 cubejs create APP-NAME -d DB-TYPE [-t TEMPLATE] 说明 -d 指定我们依赖的数据库类型 -t 指定模版 默认为express 类型的 generate 方便我们生成表的schema 命令使用 cubejs generate -t orders,customers token 可以方便的生成一个可用的jwt token 命令使用 cubejs token -e TOKEN-EXPIRY -s SECRET -p FOO=BAR 说明 -e 代表有效期 -s app secret 可以通过CUBEJS_API_SECRET 指定 -p payload ,jwt token 的payload 内容 参考例子 cubejs token -e "1 day" -p appId=1 -p userId=2 参考资料 https://cube.dev/docs/reference 来源: https://www.cnblogs.com/rongfengliang/p/12318380.html

token带来的好处

限于喜欢 提交于 2020-02-16 20:05:33
摘要: Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位 不久前,我在在前后端分离实践中提到了基于 Token 的认证,现在我们稍稍深入一些。 通常情况下,我们在讨论某个技术的时候,都是从问题开始。那么第一个问题: 为什么要用 Token? 而要回答这个问题很简单——因为它能解决问题! 可以解决哪些问题呢? Token 完全由应用管理,所以它可以避开同源策略 Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx) Token 可以是无状态的,可以在多个服务间共享 Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。 于是,又一个问题产生了:需要为 Token 设置有效期吗? 需要设置有效期吗? 对于这个问题,我们不妨先看两个例子。一个例子是登录密码,一般要求定期改变密码,以防止泄漏,所以密码是有有效期的;另一个例子是安全证书。SSL 安全证书都有有效期,目的是为了解决吊销的问题,对于这个问题的详细情况

JWT(JSON Web Token)介绍

夙愿已清 提交于 2020-02-16 11:42:01
什么是JSON Web Token JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 首先是跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。 这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的 服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。 举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用户只要在其中一个网站登录,再访 问另一个网站就会自动登录,请问怎么实现? 一种解决方案是 session 数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请 求数据。这种方案的优点是架构清晰,缺点是工程量比较大。另外,持久层万一挂了,就会单点失败。 另一种方案是服务器索性不保存 session 数据了,所有数据都保存在客户端

ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者

痞子三分冷 提交于 2020-02-16 07:04:42
系列目录 前言: 一、阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二、借助微信公众平台SDK Senparc.Weixin for C#,所以你必须对Senparc进行独立的了解 http://weixin.senparc.com/ 三、如果配置遇到困难,下载文章尾部源码进行参考 ---------------------------------------------------资源---------------------------------------------------------- 1.微信公众平台登录地址: https://mp.weixin.qq.com/ 2.注册为公众账号后,会让你选择类型,类型分三种:订阅号( 我是个人只能选择这个 )、服务号、企业  三个类型接口开放程度不同,我们作为开发者,不必理会什么接口,只要成为开发者,全部高级接口都可以调用 3.登录后 成为开发者 4. SDK Senparc.Weixin封装了微信6.x的所有高级接口支持微信公众号、企业号、开放平台、微信支付、JSSDK 配置: 登录测试号后,可以看到一些配置,公开的接口,及说明,大致浏览所有接口名称之后。可以总结出: 1.开发环境利用appID,appsecret来获得Token 2

学成在线(第17天)

梦想的初衷 提交于 2020-02-16 00:50:29
用户认证 用户认证流程分析 用户认证流程如下: 业务流程说明如下: 1、客户端请求认证服务进行认证。 2、认证服务认证通过向浏览器cookie写入token(身份令牌) 认证服务请求用户中心查询用户信息。 认证服务请求Spring Security申请令牌。 认证服务将token(身份令牌)和jwt令牌存储至redis中。 认证服务向cookie写入 token(身份令牌)。 3、前端携带token请求认证服务获取jwt令牌 前端获取到jwt令牌并存储在sessionStorage。 前端从jwt令牌中解析中用户信息并显示在页面。 4、前端携带cookie中的token身份令牌及jwt令牌访问资源服务 前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是http header中的jwt令牌 前端请求资源服务前在http header上添加jwt请求资源 5、网关校验token的合法性 用户请求必须携带 token身份令牌和jwt令牌 网关校验redis中token是否合法,已过期则要求用户重新登录 6、资源服务校验jwt的合法性并完成授权 资源服务校验jwt令牌,完成授权,拥有权限的方法正常执行,没有权限的方法将拒绝访问。 查询用户接口 Api接口 用户中心对外提供如下接口: 1、响应数据类型 此接口将来被用来查询用户信息及用户权限信息

常规操作之JWT

六眼飞鱼酱① 提交于 2020-02-15 22:03:20
简介 由于HTTP协议是无状态的,这意味着如果我们想判定一个接口是否被认证后访问,就需要借助cookie或者session会话机制进行判定,但是由于现在的系统架构大部分都不止一台服务器,此时又要借助数据库或者全局缓存 做存储,这种方案显然受限太多。 那么我们可不可以让认证令牌的发布者自己去识别这个令牌是不是我曾经发布的令牌呢(JWT核心思想),这是JWT最大的优点也是最大的缺点,优点是简单快捷、不需要依赖任何第三方操作就能实现身份认证,缺点就是对于任何拥有用户发布令牌的请求都会认证通过。 JWT Token结构 JWT的token一般由三个部分构成: Header(头部):Json串格式对象,其中包含了Token类型(typ)和加密所用的算法类型(alg) Pavload(负载):其中包含应用自定义的需要负载的内容例如用户相关信息(身份,权限等等) Signature(签名):其中是对前面两个部分的进行加密验证,分发token时通过只存在服务端的私钥加上头部信息中的加密的算法来加密生成签名,可以保证Token不会被篡改。 在使用Jwt颁发的Token时因为不用保留Session和Cookie信息所以大大减小的服务端存储压力但是在每次请求验证时增加了解密验证的步骤所以会加大请求时间。 加密工具类 依赖包 < dependency > < groupId > com . auth0 <

Django Rest Framework源码剖析(一)-----认证

本秂侑毒 提交于 2020-02-15 16:53:16
Django Rest Framework源码剖析(一)-----认证 一、简介 Django REST Framework (简称DRF),是一个用于构建Web API的强大且灵活的工具包。 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网应用程序的API设计理论。REST这个词,是 Roy Thomas Fielding 在他2000年的 博士论文 中提出的。Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。 Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是”表现层状态转化”。如果一个架构符合REST原则,就称它为RESTful架构。所以简单来说,RESTful是一种Web API设计规范,根据产品需求需要定出一份方便前后端的规范,因此不是所有的标准要求都需要遵循。 学习RESTful API的资料: RESTful API 设计指南 、 理解RESTful架构 二、安装配置 安装需求: Python(2.7,3.2,3.3,3.4,3.5,3.6) Django