1.开发环境vue+node
2.电脑系统 windows10专业版
3.在应用vue+node开发的过程中,在写登录时候咱们会应用到token验证,上面我来分享一下express生成token和简略的应用,心愿对你有所帮忙。
4.装置 jsonwebtoken

npm install express-jwtnpm install jsonwebtoken --save

4-1.express-jwt和jsonwebtoken是什么?

express-jwt外部援用了jsonwebtoken,对其封装应用。在理论的我的项目中这两个都须要援用,他们两个的定位不一样。jsonwebtoken是用来生成token给客户端的,express-jwt是用来验证token的。
5.在express我的项目中,在public文件夹下新建token.js文件,增加如下代码:
//用于生成和解析tokenvar jwt = require('jsonwebtoken');var signkey = 'mes_qdhd_mobile_xhykjyxgs';exports.setToken = function (username, userid) { return new Promise((resolve, reject) => {  const token = jwt.sign({   name: username  }, signkey, { expiresIn: '1h' });  resolve(token); })}exports.verToken = function (token) { return new Promise((resolve, reject) => {  var info = jwt.verify(token.split(' ')[1], signkey);  resolve(info); })}

6.在app.js中进行配置:

var vertoken = require('./public/token');
app.use(function (req, res, next) {  var token = req.headers['authorization'];  if (token == undefined) {    return next();  } else {    vertoken.verToken(token).then((data) => {      req.data = data;      return next();    }).catch((error) => {      return next();    })  }  next(createError(404));});
app.use(expressJWT({  secret: 'mes_qdhd_mobile_xhykjyxgs',  algorithms: ["HS256"]}).unless({  path: ['/index']//除了这个地址,其余的URL都须要验证}));
请留神:应用 jwt 可能会报错:algorithms should be set;解决办法:在app.use(expressJWT) 这个配置中增加 algorithms: ["HS256"];报错起因:2020.7.7日jwt更新之后,装置的express-jwt模块会默认为6.0.0版本,更新后的jwt须要在配置中退出algorithms属性,即设置jwt的算法。个别HS256为配置algorithms的默认值:
app.use(function (err, req, res, next) {  // set locals, only providing error in development  if (err.status == 401) {    return res.status(401).send('token生效');  }  res.locals.message = err.message;  res.locals.error = req.app.get('env') === 'development' ? err : {};  // render the error page  res.status(err.status || 500);  // res.render('error');});

7.在接口中应用:

var express = require('express');var router = express.Router();var jwt = require('jsonwebtoken');var vertoken = require('../public/token')/* GET users listing. */router.get('/', function (req, res, next) { var Ctok = ""; vertoken.setToken("张三").then((data) => {  let CObj = {   code: "申请胜利啦",   CHtoken: data  }  res.json(CObj); });module.exports = router;

8.效果图如下:

8-1.在这里分享一下能够解析token的网站:

https://jwt.io/

8-2.成果如下:

9.本期的分享到了这里就完结啦,心愿对你有所帮忙,让咱们一起致力走向巅峰。