# node JWT鉴权小记

  • jsonwebtoken Github地址node-jsonwebtoken
  • jwt.io官网 传送门支持很多语言的工具包,也有关于JWT token的生成方式的demo便于理解

TIP

本文小案例使用express框架进行编写

  • 我们首先要下载一些包
npm init -y && npm i jsonwebtoken express -S
1
  • 下载好工具包我们开始写一个登录服务,本文就不调用数据库了,直接将密码和用户名写在代码里
// index.js
const express = require('express')
var jwt = require('jsonwebtoken');
let app = express()

app.get('/login',(req,res)=>{
  if (req.query.name === 'husky' && req.query.pwd === 'husky' ){
    var token = jwt.sign({ foo: 'bar' }, secret);
    res.json({
      token: token,
      date:new Date()
    })
  }else{
    res.send(401)
  }
})

app.listen(8000)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • 通过调用登录接口,我们可以拿到token
  • 这里我们先执行一下看看可以,是否可以获取JWT token
node index.js
1
  • 我们使用postman来调试 postman调试截图

  • 我们获取token成功,接下来我们来验证这个token是否有效

  • 这里我们来写一个接口判断一下,如果在真实项目中,还会有其他逻辑的,这里暂且不考虑

  • 这里我们采用的是bearer的方式在header中添加的token,因为这个token是放在请求头里面的,所以我们要在请求头里面获取

// index.js

app.get('/verify',(req,res)=>{
  try {
    let token = req.headers.authorization.split(' ')[1]
    var decoded = jwt.verify(token, secret);
    res.json(decoded)
    
  } catch (error) {
    res.send(401)
  }
})

1
2
3
4
5
6
7
8
9
10
11
12
13
  • 这里我们重启一下
node index.js
1
  • 由于在上一步中我们获取到了token,在这步将会用到,我们postman切换tab,来到Authorizationtype我们使用Bearer Token的方式,然后将token粘贴在右侧token的输入框中,点击发送,body就会将上一步的用户信息返给我们 postman调试截图

  • 到这里我们就完成了JWT的验证了

Last Updated: 1/23/2022, 10:16:22 AM