每一个app都要有用户,而有用户就要有每个用户单独的token。
jsonwebtoken是一个可以加密生成token和解密token的中间件。
npm install jsonwebtoken --save安装
我将这个过程封装到了一个中间件中并通过个koa2框架使用
const jwt = require('jsonwebtoken') module.exports = function () { return async function (ctx,next) { //jwt生成token var name = {name: 'hongweijiang'} const token = await jwt.sign(name, '123345', { expiresIn: 3600}) console.log(token.split('.')[2])//token为3部分用’.‘分开最后一个是随机字符串 //jwt解密token await jwt.verify(token, '123345', function (err, decoded) { if (!err){ console.log(decoded.name); //会输出hongweijiang,如果过了60秒,则有错误。 } }) await next() } }
入口文件
const Koa = require('koa') //引入koa框架 const app = new Koa() //实例化koa const jwt = require('./middleware/jwt-token') //token加密和解密 app.use(jwt()) //token的解密和加密中间件的使用
jwt.sign传入用户信息和自定义的私人秘钥生成的token是一串通过‘.’隔开的三个字符串,将字符串split('.')分开取最后一个作为token。(例如eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaG9uZ3dlaWppYW5nIiwiaWF0IjoxNTUwOTE1NDkxLCJleHAiOjE1NTA5MTkwOTF9.DHC5rZOW6bQY4AO-w1F8PArXbdusJ5zcvUrUq88Rusw
token:DHC5rZOW6bQY4AO-w1F8PArXbdusJ5zcvUrUq88Rusw)
jwt.verify通过jwt.sign生成的token和之前自定义的私人秘钥解密成用户信息。