nodejs 开发 - windows 电脑上生成私钥和公钥 & express jwt 验证

352 阅读1分钟

1、在指定的文件夹中,使用 git bash

01.png

2、在 git bash 窗口中输入对应命令

openssl // 开启命令

genrsa -out 【私钥文件名称】【私钥长度】 // gensra -out private.key 1024 // 生成并输出私钥

rsa -in 【私钥文件名称】 -pubout -out 【公钥文件名称】// rsa -in private.key -pubout -out public.key // 生成并输出公钥

03.png

console.log('start')
const fs = require('fs')
const express = require('express')
const jwt = require('jsonwebtoken')
const app = express()
const jwt_key ="htt";
const private_key = fs.readFileSync('../keys/private.key');
const public_key =  fs.readFileSync('../keys/public.key');
// 对称加密
app.post('/login',(req,res) =>{
  var token = jwt.sign({foo:'bar',},jwt_key,{
    expiresIn: 30 //默认为秒,官方文档解释为 ms 毫秒 有问题
  });
  res.send(token)
})

app.get('/demo',function(req,res) {
  console.log();
  let authorization = req.get('authorization') || "";
  authorization = authorization.replace("Bearer ",'')
  console.log(authorization)
  jwt.verify(authorization,jwt_key,function(err,decode) {
    if(err) {
     console.log(err)
      res.send('token 验证失败')
    }else {
      res.send(JSON.stringify(decode))
    }

  })

});

// 非对称: 公钥 私钥 加密
app.post('/login',(req,res) =>{
 let token = jwt.sign({ foo: 'bar'},private_key,{ algorithm: 'RS256', expiresIn: 30});
 res.send(token)

})
app.get('/demo',(req,res) =>{
  let authorization = req.get('authorization') || '';
  authorization = authorization.replace('Bearer ','');
  jwt.verify(authorization,public_key,{algorithms:['RS256']},function(err,decode) {
    if(err) {
      console.log('token 验证失败')
    }else {
      res.send(JSON.stringify(decode))
    }
  })

})




app.listen(9001,function() {
  console.log('9001,服务开启')
})