安装
npm install jsonwebtoken
官方文档
https://www.npmjs.com/package/jsonwebtoken
jwt中文解析

签发token

  1. var jwt = require('jsonwebtoken');
  2. // jwt.sign 的第一个参数是 从前端获取的参数/或数据 第二个参数是 密钥 在验证token时也会用到密钥
  3. var token = jwt.sign({ foo: 'bar' }, 'shhhhh');

验证token

  1. // jwt.verify 的第一个参数是 之前签发的token 第二个参数是密钥
  2. var decoded = jwt.verify(token, 'shhhhh');
  3. console.log(decoded)

完整代码

  1. const express = require("express");
  2. const jwt = require("jsonwebtoken");
  3. const app = express()
  4. //跨域处理
  5. app.use('*',function(req,res,next){
  6. res.setHeader("Access-Control-Allow-Origin", "*");
  7. res.setHeader("Access-Control-Allow-Headers", "Content-Type");
  8. // res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
  9. // res.setHeader("Access-Control-Max-Age", "3600");
  10. // res.setHeader("Access-Control-Allow-Credentials", "true");
  11. next();
  12. });
  13. // 处理post请求
  14. app.use(express.json())
  15. app.use(express.urlencoded({ extended: false }))
  16. app.get('/', (req, res) => res.send('Hello World!'));
  17. app.get('/login', (req, res) => {
  18. console.log(req.query)
  19. let name = req.query.name
  20. let pass = req.query.pass
  21. // 这个是密钥
  22. let secret = 'MIYAO';
  23. // 签发token 设置有效时间为 1800s
  24. let token = jwt.sign({name, pass}, secret, { expiresIn: 60 * 30 })
  25. res.send({
  26. code: 1,
  27. msg: '登录成功',
  28. data: {
  29. token,
  30. name
  31. }
  32. })
  33. })
  34. app.post('/ver', async (req, res) => {
  35. let token = req.body.token
  36. // console.log(req.body.token)
  37. let secret = 'MIYAO';
  38. // 验证token
  39. try {
  40. // 验证通过
  41. const payload = jwt.verify(token, secret)
  42. console.log(payload)
  43. res.send({code: 1, msg: 'success', payload})
  44. } catch (error) {
  45. // 验证不通过
  46. res.status(401).send({
  47. msg: 'invalid token'
  48. })
  49. }
  50. })
  51. app.listen(3000)