当前位置: 首页 > news >正文

网页建设技术和网站策划书网页游戏排行榜前十名评论

网页建设技术和网站策划书,网页游戏排行榜前十名评论,做网站公司-汉狮网络,天猫店铺购买平台最近的工作是开发一个分布式的服务系统#xff0c;选用的环境是node开发环境#xff0c;由于需要全面的进行异步开发所以使用Koa框架#xff0c;开发Web服务需要对用户进行身份认证#xff0c;所以就使用koa-jwt#xff0c;为什么使用token这种方式网上有很多介绍token和s… 最近的工作是开发一个分布式的服务系统选用的环境是node开发环境由于需要全面的进行异步开发所以使用Koa框架开发Web服务需要对用户进行身份认证所以就使用koa-jwt为什么使用token这种方式网上有很多介绍token和session的区别我这里就不再赘述了。在给大家演示代码之前我在这一章主要是介绍koa-jwt的工作流程在后面的一章中我将使用程序对大家进行演示。首先我在这附上koa-jwt的源代码然后为大家剖析其的工作流程。源程序koa-jwt的源程序的主程序在lib/index.js中use strict;const pAny require(p-any);const unless require(koa-unless);const verify require(./verify);const getSecret require(./get-secret);const resolveAuthHeader require(./resolvers/auth-header);const resolveCookies require(./resolvers/cookie);module.exports (opts {}) { const { debug, getToken, isRevoked, key user, passthrough, tokenKey } opts; const tokenResolvers [resolveCookies, resolveAuthHeader]; if (getToken typeof getToken function) { tokenResolvers.unshift(getToken); } const middleware async function jwt(ctx, next) { let token; tokenResolvers.find(resolver token resolver(ctx, opts)); if (!token !passthrough) { ctx.throw(401, debug ? Token not found : Authentication Error); } let { state: { secret opts.secret } } ctx; try { if (typeof secret function) { secret await getSecret(secret, token); } if (!secret) { throw new Error(Secret not provided); } let secrets Array.isArray(secret) ? secret : [secret]; const decodedTokens secrets.map(async s await verify(token, s, opts)); const decodedToken await pAny(decodedTokens) .catch(function (err) { if (err instanceof pAny.AggregateError) { for (const e of err) { throw e; } } else { throw err; } }); if (isRevoked) { const tokenRevoked await isRevoked(ctx, decodedToken, token); if (tokenRevoked) { throw new Error(Token revoked); } } ctx.state[key] decodedToken; if (tokenKey) { ctx.state[tokenKey] token; } } catch (e) { if (!passthrough) { const msg debug ? e.message : Authentication Error; ctx.throw(401, msg, { originalError: e }); }else{ ctx.state.jwtOriginalError e; } } return next(); }; middleware.unless unless; return middleware;};2可配置参数koa-jwt的可配置参数有debug,getToken,isRevoked,keypassthroughtokenKeysecretcookie2.1debug参数 debug参数数据类型应该是Boolean类型用于表示是否处于调试状态如果不是处于调试状态返回的错误参数为Authentication Error如果处于调试状态将会返回具体的错误原因。2.2getToken参数 getToken参数数据类型应该是函数类型为用户自定义的获取请求token的函数如果没有定义此参数将会从请求头的authorization字段或者是cookie中的指定字段获取token。2.3isRevoked参数 isRevoked参数的数据类型为函数类型为用户自定义的token是否失效的函数如果没有定义此参数将不进行token失效处理。2.4key参数 key参数的数据类型应该是string类型将属性名为key的属性设置到ctx.state对象中同时其属性值为解密的token的值默认值为user。2.5passthrough参数 passthrough参数的数据类型应该是Boolean类型此参数用于对身份认证出现错误的时候是否直接抛出错误如果此参数的值为真在身份认证过程中将不会直接抛出错误而是继续执行后面的程序如果此参数值为假江湖在出现错误的地方将错误抛出。2.6tokenKey参数 tokenKey参数的数据类型应该为string类型其作用与key的作用类型将属性名为tokenKey的属性设置到ctx.state对象中同时其属性值为获取token的方法。默认此参数为undefined。2.7secret参数 secret参数的数据类型为函数类型返回值为字符串类型或者直接是字符串类型如果没有定义此参数将会报错所以此属性为必要参数。此参数的作用是解密的秘钥。2.8cookie参数 cookie参数的数据类型应该是字符串类型用于指定从cookie中获取token的指定的属性名称。3Koa-jwt的工作流程 Koa-jwt的工作流程如下图所示从源程序和流程图我们可以看到koa-jwt的处理过程为(1)获取用户的配置参数。(2)设置获取默认token的函数如果用户定义了getToken方法将此方法放在获取token方法数组的第一位。(3)调用获取token方法数组中的方法直到获取到token或者是遍历完数组。(4)判断是否获取到token如果获取到执行后面的过程如果没有获取到抛出错误。(5)判断secret的类型是否是函数如果是函数调用此函数存入的值为头部数据和载荷数据返回字符串型的秘钥。(6)判断秘钥是否为真对于为真的执行后面的参数对于不为真的抛出错误。(7)根据秘钥判断token是否正确对于token正确的执行后面的过程对于token不正确的抛出错误。(8)根据是否定义失效处理函数如果定义失效处理函数对此token进行失效判断如果失效抛出错误对于未失效继续处理后面的内容。(9)根据定义key参数设置ctx.state的key属性的值为获取的解密的token(10)根据用户是否定义tokenKey设置ctx.state的tokenKey属性的值为获取token的函数。(11)执行后面的组件
http://wiki.neutronadmin.com/news/163438/

相关文章:

  • 上海闸北网站建设wordpress内页显示副标题
  • 手把手做网站龙岗坪地网站建设
  • 松江网站建设推广个人网站样式
  • 唐山滦县网站建设三亚网站建设方案
  • 贷款网站建设方案中智软件开发有限公司
  • 高端模板建站报价wordpress管理网站
  • 网站制作新手烟台网站制作厂家电话
  • 企业网站属于哪种网站类型游戏网站网页模板html
  • 旅游网站策划书西安公司团建活动好去处
  • 医院网站 行风建设合肥做网站的的公司
  • 家教网站建设模板湘潭网站建设 磐石网络最好
  • 深圳专业建站公司技术好百度大数据中心
  • 网站建设技术概述淮安网站建设公司
  • 绵阳网站建设价格企业策划书范文
  • 济南网站建站模板wordpress 团队 主题
  • 网站建设整改情况汇报怎么才可以做网站
  • 自己做企业网站详细流程免费ppt免费模板官网
  • 长春火车站有几个互联网营销师培训
  • 课程网站资源建设小结东莞做网站
  • 网站如何备案要关站吗网站构建的基本流程
  • 如何做个网站推广自己产品佛山微网站建设哪家专业
  • 衡阳做淘宝网站与做机器人有关的网站
  • 网站建设属于什么经营类型寺庙网站开发策划书
  • 规划网站的思路wordpress开发工作
  • 保健品手机网站模板什么网站可以做数据图
  • 福州思企互联网站建设公司怎么样携程网站联盟
  • 个人做网站的必要性linux 转换wordpress
  • 哈尔滨网站开发企业成都企业网站设计制作
  • 网站改完域名打开速度慢wordpress手机怎么使用
  • 网站搭建的网页制作 培训