温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 互联网科技 > 
  • 大数据 > 
  • jsonwebtoken如何生成与解析token

jsonwebtoken如何生成与解析token

发布时间:2021-07-19 11:35:57 来源:亿速云 阅读:1040 作者:chen 栏目: 大数据

这篇文章主要讲解了“jsonwebtoken如何生成与解析token”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jsonwebtoken如何生成与解析token”吧!

        之前写了一篇介绍token的文章:简单理解Token机制,token算法自己设计的,使用了随机算法,导致token无法进行反向解密。所以我当初使用了 redis进行存储token,前端调用API时需要携带token进行身份验证,token有效期48小时。但是我们有说过:sessionid是需要空间进行存储的,但是token在 服务器是可以不需要存储用户信息的。所以我们能不能做到用户注册登陆成功给用户生成一个token返回给客户端,等前端携带token调用API时我们直接解析token看能否解析出用户数据来决定用户是否有接口权限呢?事实上NodeJS提供的一个npm包:jsonwebtoken就可以实现token的生成与反向解密出用户数据。接下来我们看看jsonwentoken如何进行使用。

首先先全局安装一个express-generator,命令为:

npm install -g express-generator

然后使用express-generator快速搭建一个express项目,命令为:

express express_demo

然后进入项目并且安装express项目所需依赖,命令为:

cd express_demo && npm install

到这里项目搭建成功了,我们可以看看项目结构:

jsonwebtoken如何生成与解析token

首先在util下创建common.js,该文件主要放置常用公共方法,这里我目前只有两个公共方法:paramAll(用来获取前端传来的参数),encryPassword(对密码拼接字符串进行MD5加密)。

jsonwebtoken如何生成与解析token

可以看到第一行导入crypto依赖,MD5加密需要使用到这个包,所以我们先装下这个依赖,命令为:

npm install --save-dev crypto

然后在util下创建bootloader.js,主要封装几个全局函数,用来输出测试数据以及给前端返回数据使用。

jsonwebtoken如何生成与解析token

然后打开config.js,配置jsonwebtoken生成token所需的secretsecret为加密密钥,不能泄露给其他人使用。

jsonwebtoken如何生成与解析token

接下来步入正轨了,我们一直说使用jsonwebtoken生成token,那当然我们首先安装下jsonwebtoken,命令为:

npm install --save-dev jsonwebtoken

接下来我们来写个接口是线下token的生成,我们接口实现在router下实现。首先打开router/users.js,在文件顶部先导入我们刚才编写的几个文件:

jsonwebtoken如何生成与解析token

接下来我们实现接口,将用户的基本信息结合我们设置的密钥secret通过jsonwebtoken生成token:

jsonwebtoken如何生成与解析token

通过我们刚才封装的paramAll()进行过去前端的传参,密码是隐私数据所以通过封装好的encryPassword()进行MD5加密。然后结合secret通过jsonwebtoken.sign(info, secret, options)进行加密生成token。我们来看下接口效果:

jsonwebtoken如何生成与解析token

可以看到我们成功将用户信息转化为token了,接下来我们来看看如何反向解析出用户数据,解析token使用方法:

jsonwebtoken.verify(token, secret ,callback)

我们实现一个接口实现解析用户token获取用户信息:

jsonwebtoken如何生成与解析token

这里需要注意的一点:如果token解析失败或者token已经过期,则都会返回err,只有正确解析出用户数据才会返回data。我们可以看下效果:

jsonwebtoken如何生成与解析token

可以看到我们成功把用户数据解析出来,接下来我们可以看看在真正的API接口中我们如何去使用jsonwebtoken去进行token的解析使用。首先我们提到过了接口安全性一般要使用签名,签名规则还是依旧使用我一直使用的规则:

1.将接口所需参数加上当前时间戳参数time,time取毫秒值组装成json对象。2.将所有参数以key=value的形式按照ASCII的顺序进行排序得到waitSign。3.对waitSign进行MD5加密,得到signParam.4.将signParam转化为纯小写,得到最终的签名sign。

那接下来我们首先先把生成签名的算法封装成公共方法放到common.js中:

jsonwebtoken如何生成与解析token

API接口免不了数据库操作,我们接下来封装下数据库操作。首先在config.js中配置数据库配置信息:

jsonwebtoken如何生成与解析token

接下来在项目根目录创建db文件夹,在db下创建 mysql.js对数据库的增删改查操作进行封装,先封装连接池初始化以及连接池释放方法:

jsonwebtoken如何生成与解析token

再封装一个用户插入更新数据,一个用于查询数据:

jsonwebtoken如何生成与解析token

到这里数据库我们也封装好了,我们开始写API实现用户登陆,登陆成功生成token。我们看看实现的代码:

jsonwebtoken如何生成与解析token

其实登陆逻辑可以分为三个步骤:

1.将参数按照解密规则加密生成签名sign2.签名验证成功,数据库验证账号密码是否匹配3.账号密码匹配生成token与用户信息一起返回给前端

我将数据库操作封装到dao层下的users.js下,我们看下登陆数据库的逻辑代码:

jsonwebtoken如何生成与解析token

到这里登陆逻辑完成了,我们看下接口的调用效果:

jsonwebtoken如何生成与解析token

调用成功,会生成一个token结合用户信息一起返回给前端。我们再实现一个接口查询用户个人积分信息。前端调用API需要携带token进行验证个人信息。

jsonwebtoken如何生成与解析token

本接口一样分成三个步骤:

1.将参数按照解密规则加密生成签名sign2.签名验证成功,解析token验证解析后的用户账号与用户传参的账号是否一致3.验证成功进行数据库操作查询用户的积分数据返回给前端

一样我们把数据库操作封装在dao/users.js下,我们可以看下数据库逻辑:

jsonwebtoken如何生成与解析token

我们看下接口调用效果:

jsonwebtoken如何生成与解析token

可以看到我们成功解析token获得用户信息,并查询到用户的积分信息。

        其实在公司前后端交互基本上我们也是采用签名sign + token + timestamp的验证方式。本篇文章也完成的重现了开发接口的整个流程,为了提高代码可维护性,我们将一些公共方法全部进行了封装,为后续的产品迭代增加了更多的可能性。

        本篇文章源码以及上篇加解密算法源码已上传码云,下载链接:

https://gitee.com/mqzuimeng/test_code.git

感谢各位的阅读,以上就是“jsonwebtoken如何生成与解析token”的内容了,经过本文的学习后,相信大家对jsonwebtoken如何生成与解析token这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节
推荐阅读:
  1. C# JSON码的生成与解析
  2. 怎么生成php里的token

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

token
  • 上一篇新闻:
    如何检测ip和port是否可连接
  • 下一篇新闻:
    python中的EasyOCR库是什么

猜你喜欢

  • java中定义变量的方法有哪些
  • Java中怎么声明一个变量
  • php如何比较两个数大小
  • c++的sort函数如何使用
  • c++的sort函数有什么作用
  • c++的sort函数有哪些用途
  • c++的sort函数使用要注意哪些事项
  • c++中怎么用sort函数对给定区间排序
  • matlab怎么定义自变量区间
  • matlab中怎么定义一个常数
最新资讯
  • 解释Zabbix中通过API集成外部数据源的方法
  • 如何在Zabbix中实施网络安全扫描和漏洞评估的监控
  • 描述Zabbix中的跨平台监控能力和配置方法
  • Zabbix如何应对和监控分布式拒绝服务攻击
  • 如何在Zabbix中部署机器学习算法以提高告警准确性
  • 解释Zabbix在金融服务行业中的应用及其监控要点
  • Zabbix支持的自定义报警声音和通知方法有哪些
  • 如何在Zabbix中利用图形和视图来展示复杂的监控数据
  • 在Zabbix中如何配置应用程序性能管理监控
  • 描述Zabbix中针对服务质量监控的最佳实践
相关推荐
  • 利用vue怎么将生成的token保存到localStorage
  • SpringBoot集成JWT怎么生成token和校验
  • Python解析式与生成器的介绍
  • php如何生成token
  • 基于JDOM生成解析XML过程解析
  • 怎么在PHP中生成token验证
  • 如何实现Openstack fernet token 解析
  • PHP中token的生成方法
  • Java中JSON数据的生成与解析
  • PHP中token如何生成

相关标签

tokens devicetoken access_token stringtokenizer access token AccessToken Tokenizer sa-token jmeter form mvc json java axios promise api php header k8s jquery
AI

代做工资流水公司潍坊工资证明办理湛江代做房贷流水漳州转账流水打印南通制作银行流水修改济南代办流水温州对公账户流水报价赣州办理工资流水九江离职证明制作莆田做贷款工资流水漳州代做背调银行流水宿迁查询消费贷流水莆田企业流水打印样本湛江打银行流水电子版九江办流水单广州查询购房银行流水石家庄打印背调银行流水咸阳企业对公流水扬州打银行对公流水廊坊打印工资银行流水商丘银行流水PS报价邢台工资流水单代做太原开企业对私流水宁德制作对公流水九江查房贷流水廊坊办理房贷收入证明烟台办入职工资流水威海代办日常消费流水廊坊工资流水报价商丘查银行对公流水银川签证银行流水 制作香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化