1. 程式人生 > >node後端使用jwt實現跨域認證--生成token、驗證token是否無效和過期

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

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

引入jwt

var jwt = require('jsonwebtoken');

生成token

在登入時,如果使用者名稱和密碼正確,則使用jwt生成token,返回給前端

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解析此token

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;