Nodejs项目中使用token验证,jwt,jsonwebtoken_jsonwebtoken expiresin-程序员宅基地

技术标签: 前端开发  Nodejs,Mongodb,后端,服务器  express  nodejs  koa  token  

目前 在web框架中最流行的身份验证是使用jsonwebtoken,简称jwt.可以设置加密方式,过期时间,存放个人信息,逆解析.

抽空研究了一下nodejs的jwt如何做,下面来记录一下

使用的包是

"jsonwebtoken": "^8.3.0"

jwt github 地址

 

主要用到的方法是

生成token  jwt.sign()
验证token  jwt.verify()

 

签名方法:jwt.sign(payload, secretOrPrivateKey, [options, callback])

payload 是一个json对象或者是一个可以json化的buffer或字符串 这个对象可以存储用户id,会话信息等,这里的信息都是可以使用jwt.verify()方法拿到的. 

secretOrPrivateKey是加密的key或者叫做密匙,不知道密匙是无法解析payload参数的.

options 参数 是一个json对象

expiresIn : 表示有效期  不带单位默认为秒  如带单位如: "2 days""10h""7d"

......

还有很多参数设置,具体请查看官文

 

如生成一个token,把用户id放进去,设置有效期为1小时

const jwt = require('jsonwebtoken')
let token = jwt.sign({user: '1234'}, 'Fizz', {expiresIn: 60 * 60})
console.log(token)

 就这么简单

 

解析验证方法:jwt.verify(token, secretOrPublicKey, [options, callback])

token: 就是token字符串 由jwt.sign()方法生成的

secretOrPublicKey:是加密的key,用于解析生成token时的payload参数

options:

设置一些解密的方法....

使用方法

jwt.verify(token, 'Fizz', function (err, data) {
  if (err) console.log(err)
  console.log('解析的数据', data)
})

 使用方法就是这么简单

可以将token的验证做成做一个中间件,在路由中使用,可用于做登录拦截.获得会话信息

 

谢谢阅读.如果觉得对你有帮助请记得点赞或收藏.欢迎留言讨论.你的支持是我出产优秀博客的动力.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/github_35631540/article/details/83898056

智能推荐

谷歌浏览器出现应用程序无法启动,因为应用程序的并行配置不正确....(亲测完美解决)_google应用程序无法启动-程序员宅基地

文章浏览阅读6.2w次,点赞43次,收藏50次。电脑开机完整报错提示为:应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。刚开始也在网上找了N久的解决方案(如:启动windws Modules installer、安装VC等软件、或者重装浏览器,但是书签太多备份复杂。。。。)最终是发现确实配置版本信息的文件文件所在路径:C:\Program Files ..._google应用程序无法启动

对于第三方包概念的一些整理_第三方包是什么意思-程序员宅基地

文章浏览阅读681次。对于第三方包概念的一些整理什么是包?Node.js 中的第三方模块又叫做包,不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用,Node.js 中的包都是免费且开源的,不需要付费即可免费下载使用为什么需要包1.由于 Node.js 的内置模块仅提供了一些底层的 API,导致在基于内置模块进行项目开发的时,效率很低2.包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率3.包和内置模块之间的关系,类似于 jQuery_第三方包是什么意思

银行软件测试面试问题_银行软件测试面试常见问题答案-程序员宅基地

文章浏览阅读693次。测试技术面试题1、什么是兼容性测试?兼容性测试侧重哪些方面?参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。兼容和配置_银行软件测试面试常见问题答案

<学习笔记> public static void main(String[] args)小结_public static void main(string[] args)问题:测试输出args,-程序员宅基地

文章浏览阅读1.4k次。之前在学习操作系统时就遇到了String[] args这个问题,但当时也没作为重点,今天趁着学习java,决定深入的去学习一下这个问题。代码如下: public class StringTest {public static void main(String[] args) {for(String arg:args){ Sys_public static void main(string[] args)问题:测试输出args,结果是什么,并搞

VS2010中建立Qt工程但是Qt关键字下面出现红色波浪线_qt怎么注释为出现红色波浪线-程序员宅基地

文章浏览阅读3.6k次。提供解决方案—在VS2010中建立Qt工程,Qt关键字下面出现红色波浪线,鼠标放在关键字上面显示“Error:未定义的标示符,但是能通过编译并运行。_qt怎么注释为出现红色波浪线

Goland 同一个package中函数互相调用的问题_goland 关联包-程序员宅基地

文章浏览阅读4.6k次。使用的为 goland 碰到同一个 package 互相调用,编译显示函数未定义,原因为默认按file 编译,默认没有编译version.go 解决方法,设置按照 package 编译就可以了..._goland 关联包

随便推点

【Ubuntu】将Qt程序打包制作成deb_qt打包成deb-程序员宅基地

文章浏览阅读1.5k次。如果使用环境是x86可以直接下载,下载地址如果使用环境是嵌入式,需要下载linuxdeployqt源码,自行编译。_qt打包成deb

dubbo service注解用法_解决dubbo的服务发布注解@service不能和事务注解不能共用的方案...-程序员宅基地

文章浏览阅读2.3k次。最近在项目的开发中遇到了一个问题,就是服务提供方使用@service发布dubbo服务时候,服务消费方@Reference无法注入bean导致空指针异常的问题。分析原因为@service注解并没有将服务发布出去而导致的。所以解决问题的关键点在于如何将服务正确的发布出去。事务采用了aop技术,而aop默认采用的是基于JDK的动态代理(接口代理),所以在服务发布的时候无法确定使用接口类还是真实类,从而..._dubboservice注解 interfacename

搭建文件服务器_文件服务器搭建-程序员宅基地

文章浏览阅读8.4k次,点赞3次,收藏40次。文件服务器,又称档案伺务器,是指在计算机网络环境中,所有用户都可以访问的文件存储设备。下面是搭建文件服务器的步骤:1.打开Windows服务管理器<仪表盘,选择“添加角色和功能”2.到这里选择文件服务器相应功能安装3.安装完成后在这里打开文件和存储服务打开后在共享里创建文件共享因为SMB与Windows更结合所以选择SMB高级共享这里选择共享路径指定共享的名称这里全部勾选4.自定义文件权限禁用继承添加权..._文件服务器搭建

ansible playbook-格式化新的卷并创建LVM卷_ansible playbook创建lvm-程序员宅基地

文章浏览阅读4.7k次。playbook如下:---- hosts: server1 user: ubuntu sudo: yes gather_facts: no vars: mntp: "/data01" vgname: "vg01" pvname1: "/dev/xvdf1" pvname: "/dev/xvdf" lv1: "_ansible playbook创建lvm

Java中清除session_java中session中删除-程序员宅基地

文章浏览阅读1k次。Java中清除session_java中session中删除

vuecli2.x版本构建的项目如何配置环境变量_vue-cli2搭建的项目如何判断正式服, 如何设置node_env-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏4次。vuecli2.x构建的项目目录和vuecli3.x/4.x是不同的在vuecli2.x版本构建的项目根目录中有build和config文件夹如下:我们接下来只讲vuecli2.x是如何配置环境变量的一般会划分哪些环境呢?开发环境development,测试环境test,正式环境production为什么要划分?开发的时候我们访问接口地址都是访问他们的ip地址;开发完了项目打包到放到测试服务器,你的接口地址要变成测试地址;上线了接口地址又要改成正式地址;总不能每次手动切换把,而且不仅仅是接口地_vue-cli2搭建的项目如何判断正式服, 如何设置node_env