vue猫码小程序

JWT 鉴权

2020-11-09  本文已影响0人  ComfyUI

使用 koa-jwt + jsonwebtoken 完成用户鉴权功能。
项目地址:https://github.com/Ewall1106/mall

安装

$ npm install koa-jwt jsonwebtoken --save

JWT 鉴权

const Koa = require('koa');
const jwt = require('koa-jwt');

const app = new Koa();

// 1. 错误信息处理
app.use(async (ctx, next) => {
  return next().catch((err) => {
    if (401 == err.status) {
      ctx.body = {
        code: 50001,
        message: '用户鉴权失败',
      };
    } else {
      throw err;
    }
  });
});

// 2. 中间件注册
app.use(jwt({ secret: JWT_SECRET }).unless({ path: [/^\/public/, /\/login/] }));

Token 生成

// controller/UserController.js
const jwt = require('jsonwebtoken');

async login(ctx, next) {
  // ...
  // 在登录成功后
  const token = jwt.sign({ uid: user._id }, JWT_SECRET, { expiresIn: '15d' });
  ctx.body = {
    code: 200,
    entry: {
      token: token
    },
  };
},

前端设置

// 登录
login(loginInfo).then((res) => {
  const { token } = res.entry;
  console.log('token', token);
});
// src/utils/request.js

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    if (store.getters.token) {
      // JWT鉴权
      config.headers.Authorization = `Bearer ${getToken()}`;
    }
    return config;
  },
  (error) => {
    console.log(error);
    return Promise.reject(error);
  }
);
上一篇 下一篇

猜你喜欢

热点阅读