-
安装 jsonwebtoken
npm install jsonwebtoken --save -
添加
token.js生成和验证 tokenconst jwt = require("jsonwebtoken") const signkey = 'mes_qdhd_mobile_xhykjyxgs' exports.setToken = (username) => { return new Promise((resolve, reject) => { // sing接收的第一个参数为一个对象(可自定义),否侧报错:jwt malformed const token = jwt.sign({ username }, signkey, { expiresIn: '1h' }); resolve(token); }) } exports.verToken = (token) => { return new Promise((resolve, reject) => { jwt.verify(token, signkey, (err, result) => { // 网上有些教程此处使用 token.split('.')[1],无法校验,源码中已经做了处理 // var parts = jwtString.split('.'); // if (parts.length !== 3){ // return done(new JsonWebTokenError('jwt malformed')); // } if (err) { console.log(err); reject(err) } else { console.log(result); resolve(result) } }) }) } -
在
app.js中添加配置const token = require("./token") app.use(function(req, res, next) => { const URL = req.url if (URL === '/login') { // 登录接口无需校验 return next() } // 获取token值 const authorization = req.headers['authorization']; if (authorization === "undefined") { return res.status(401).send('Unauthorized') } else { // 验证token token.verToken(authorization).then((data) => { req.data = data; return next(); }).catch((error) => { return res.status(401).send('Unauthorized'); }) } }) -
登录后设置token值
const token = require("./token") app.use("/login", (req, res) => { // 登录逻辑 token.setToken(req.body.username).then(token => { res.status(200).send({ token, }) }) })