node jsonwebtoken
jsonwebtoken是node版本的JWT(JSON Web Tokens)的实现。1.什么是JWT?Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。传统的认证用户信息是用cookie-session,JWT可以更好的实现一站式登录。JWT的构成:第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature)。这3者是有关系的(请google),中间用.分割。例子:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ2.jsonwebtoken的使用方法: 1)RSA SHA256算法:
import fs from 'fs';
import path from 'path';
const jwt = require('jsonwebtoken');//生成token的方法
//data是保存的数据,例子:let data={uid:1}
function generateToken(data){let created = Math.floor(Date.now() / 1000);let cert = fs.readFileSync(path.join(__dirname, '../config/rsa_private_key.pem'));//私钥let token = jwt.sign({data,exp: created + 3600 * 24}, cert, {algorithm: 'RS256'});return token;
}//验证token,最后的res。
// 上面的生成方法,我们得到res.uid=1
function verifyToken(token){console.log('进入验证');let cert = fs.readFileSync(path.join(__dirname, '../config/rsa_public_key.pem'));//公钥console.log(cert);let res;try{let result = jwt.verify(token, cert, {algorithms: ['RS256']}) || {};let {exp = 0} = result,current = Math.floor(Date.now()/1000);if(current <= exp){res = result.data || {};}}catch(e){console.log(e);}return res;
}
这种用法是要私钥和公钥文件的。
生成方法(mac os系统亲测可以):
打开命令行工具,输入openssl,打开openssl; 生成私钥:genrsa -out rsa_private_key.pem 2048 生成公钥: rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
2)HMAC SHA256算法(jsonwebtoken的默认的算法) 不需要公钥私钥。 jwt.sign()方法只要不写algorithms项目,就是默认的HMAC SHA256算法。
转载于:https://www.cnblogs.com/xiaochongchong/p/9009596.html
node jsonwebtoken相关推荐
- Node中使用token(基于第三方包jsonwebtoken)
一.jsonwebtoken 用于生成token(加密) > jsonwebtoken 1. 安装 npm i jsonwebtoken --save 2. 使用 2.1 引入 2.2 加密 用 ...
- vue+node+mongodb 搭建一个完整博客
Vue + Node + Mongodb 开发一个完整博客流程 前言 前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统 服务端用的是 koa2框架 ...
- 路由守卫 AJAX,vue路由导航守卫 和 请求拦截以及基于node的token认证
#####什么时候需要登录验证与权限控制 1.业务系统通常需要登录才能访问受限资源,在用户未登录情况下访问受限资源需要重定向到登录页面: 2.多个业务系统之间要实现单点登录,即在一个系统或应用已登录的 ...
- node 实现Token状态登录 及数据库增删改查
1.项目目录结构 2.启动入口文件代码index.js const express = require('express') const bodyParser = require('body-pars ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
转载需经本人同意且标注本文原始地址:https://zhaomenghuan.github.io/blog/nodejs-eggjs-usersytem.html 前言 近来公司需要构建一套 EMM( ...
- node:jwt、拦截器-学习笔记
文章目录 node:jwt.拦截器 nodemon jwt 拦截器 项目部署-hash 项目部署-history node:jwt.拦截器 nodemon 每次修改代码后都需要手动重启服务? cnpm ...
- Node — 第七天 (大事件项目接口实现一)
关于JS错误处理 node中和mysql中的错误处理 node和MySQL提供的方法,已经对错误信息进行了封装,只需要使用 err.message 即可获取到错误信息. 比如: const fs = ...
- node.js编写网页_为Node.js编写可扩展架构
node.js编写网页 by Zafar Saleem 通过Zafar Saleem 为Node.js编写可扩展架构 (Writing Scalable Architecture For Nodejs ...
- Node.js 使用 JWT 进行用户认证
代码地址如下: http://www.demodashi.com/demo/13847.html 运行环境 该项目基于 node(v7.8.0版本以上) 和 mongodb 数据库,因此电脑上需要安装 ...
最新文章
- android手机内存这么大,专业解读:为什么安卓手机的内存越来越大?
- TableView/CollectionView 滑动顶部效果优化
- 怎么将导出的sql文件再次导入到数据库?
- 卫星轨道推演计算相关知识点总结(含欧拉角、旋转矩阵、及各坐标系转化等)
- 多重背包2[二进制位优化]
- c语言两个变量相乘出现乱码,C语言,矩阵的乘法运算程序,输出一堆乱码,求大神看看哪里错了。。...
- 7-42 行编辑器 (10 分)
- Oracle的dbf文件迁移
- python多线程实现for循环_Python多线程实现同时执行两个while循环
- 清新淡雅水彩手绘花卉插画素材,psd分层好用!
- C++复制粘贴代码去行标
- 【密码学】一文读懂ZUC算法
- 【舞女编程语言】:Ballerina 最新版和Ballerina Central
- 推荐的前端开源项目CDN加速服务
- tcl-debug的下载与安装及NSG2的下载与使用
- 腾讯云服务器配置LNMP环境并安装wordpress
- WMPF微信小程序框架 微信刷脸登录 获取openId 授权获取手机号 快速接入 快速集成
- WCF 项目应用连载[2] - 创建Lig日志系统
- 仿微信做个极速二维码扫描功能
- 《笨方法学习python3》练习12: Prompting People
热门文章
- vc6.0快捷键大全- -
- vue-cli3.0 Typescript 项目集成环信WebIM 群组聊天
- 冒泡排序和其两种优化
- 铁乐学Python_day12_作业
- ATG中的定时Job处理
- vc编程中出现 fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h”?...
- Unity3D正常行走和飞行的实现
- 通过exe启动class
- 【人物】徐小平:既然做老大,你就得让兄弟们有肉吃
- APP鉴赏之网易云音乐