node後端使用jwt實現跨域認證--生成token、驗證token是否無效和過時

JSON Web Token(縮寫 JWT)是目前最流行的跨域認證解決方案前端

引入jwt

var jwt = require('jsonwebtoken');

生成token

在登陸時,若是用戶名和密碼正確,則使用jwt生成token,返回給前端web

let { username, password } = req.body;
.
.
.
//jwt生成加密token,username是公文,密鑰是「secret」,1小時後過時
token = jwt.sign({ username }, "secret", { expiresIn: 60 * 60 * 1 });
.
.
.
res.json({
  code: 0, msg: '登陸成功', token: token, userName: username
});

解析token

在全部須要登陸驗證的請求中,獲取請求頭中的token,使用jwt解析此tokenjson

let token = req.headers.authorization;
if (token) {
jwt.verify(token, 'secret', (err, decoded) => {
  if (err) {
    switch (err.name) {
      case 'JsonWebTokenError':
        res.status(403).send({ code: -1, msg: '無效的token' });
        break;
      case 'TokenExpiredError':
        res.status(403).send({ code: -1, msg: 'token過時' });
        break;
    }
  }
})
}
相關文章
相關標籤/搜索