创建方法
在utils下创建一个token.js 抛出setToken,getToken方法
var jwt = require("jsonwebtoken");
var jwtSecret = "write messages"; //签名
//登录接口 生成token的方法
var setToken = function(_id, openid) {
return new Promise((resolve, reject) => {
//expiresln 设置token过期的时间
//{ openid: openid, _id: _id } 传入需要解析的值( 一般为用户名,用户id 等)
const rule = { _id: _id, openid: openid };
// const token = 'Bearer ' + jwt.sign(rule, jwtSecret, { expiresIn: '36000' });
const token = jwt.sign(rule, jwtSecret, {expiresIn: '7d'});
resolve(token);
});
};
//各个接口需要验证token的方法
var getToken = function(token) {
return new Promise((resolve, reject) => {
if (!token) {
console.log("token是空的");
reject({
error: "token 是空的"
});
} else {
var info = jwt.verify(token, jwtSecret);
// console.log('info: ', info);
resolve(info); //解析返回的值(sign 传入的值)
}
});
};
module.exports = {
setToken,
getToken
};
使用
var express = require('express')
var router = express.Router()
const Like = require('../models/Like') //引入模块模型
var vertoken = require('../utils/token') //引入token
// 个人点赞列表
router.get('/article/like/list', (req, res) => {
vertoken
.getToken(req.headers.token)
.then((data) => {
Like.find({
userId: data._id,
})
.then((likes) => {
res.json({
code: 200,
result: {
data: likes,
},
message: '请求成功!',
})
})
.catch((err) => {
console.log('err:', err)
})
})
.catch((error) => {
console.log('error:', error)
res.json({ code: 401, message: 'token失效了' })
})
})