- 资料查询
- 下载使用到的包
yarn add jsonwebtoken /或/ npm install jsonwebtoken
- 导入需要的包
var jwt = require('jsonwebtoken');
var fs = require("fs")
var path = require("path")
- 开始创建 token
共有 4 种写法,任选其一
{ foo: 'bar' }
是你要解析的数据(对象形式,一般是用一个变量放那)
- 简单的创建,只有一段(默认同步符号(HMAC SHA256))
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');
二、三 方法相同
- 此方法需要创建 私钥 与 公钥 不想整的可以点击下载我生成好的
名称:非对称加密算法
运行:后端生成的token进行私钥加密,加密完成后给前端,前端每次请求的时候都需要将私钥加密的token传给token,后端在需要进行公钥解密。
// 你想把它放在那个文件就在那个文件 cmd 执行以下代码(不能超出当前项目)
生成私钥
- ssh-keygen -t rsa -b 2048 -f private.key
生成公钥 // window电脑不支持 openssl 代码,使用 git 提供的控制台书写即可
- openssl rsa -in private.key -pubout -outform PEM -out public.key
结果展示:
方法二: 较为复杂的创建,共三段(同步符号与RSA SHA256)(建议使用)
var privateKey = fs.readFileSync('private.key');
var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'});
方法三:使用函数创建(可以异步)
var privateKey = fs.readFileSync('private.key');
jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) {
console.log(token);
});
二、三 共同用到的单词
private.key
为生成密钥的程序所在地- 一般这样写
let privateKey = fs.readFileSync(path.resolve(__dirname,"../keys/private.key"))
path.resolve
该方法将一些的 路径/路径段 解析为绝对路径algorithm
:加密算法(默认值:HS256)expiresIn
:以秒表示或描述时间跨度zeit / ms的字符串。如60,“2 days”,“10h”,“7d”,Expiration time,过期时间
方法四:将时间回退到 xx 秒之前的 token(Backdate a jwt 30 seconds)
var older_token = jwt.sign({ foo: 'bar', iat: Math.floor(Date.now() / 1000) - 30 }, 'shhhhh');
- 调用
定义的这个 token 就是结果,直接调用即可
- 注意:要有 给它个数据 data 让他生成 token (对象)
console.log(token)
全部代码参考
var jwt = require('jsonwebtoken');
var fs = require("fs")
var path = require("path")
//创建token令牌
function genToken(data){
var token = jwt.sign({ foo: 'bar' }, '2424234234243');
return token
}
console.log(genToken({username:"张三",psw:"13235474322edest"}))