egg.js 配合 jwt 进行鉴权

在这里插入图片描述

目录

  1. egg.js 配合 jwt 进行鉴权
  2. egg.js 配置 mysql 以及简单登录实现
  3. eggjs+mysql实现图片上传
  4. eggjs 实现增删改查
  5. eggjs 搭配 vue+axios 实现登录和获取用户信息

eggjs 的部署以及安装

egg + jwt 大概流程:
1. 前端登录的时候,后端在返回用户信息的时候返回token给前端
2. 前端拿到后放在 本地缓存 等方式
3. 前端在请求除了登录接口的其他接口将token放在请求头返回给后端 

安装 和配置 JWT

控制台执行命令安装 jwt

npm install egg-jwt

打开项目下 config -> plugin.js,加入配置

 jwt: {
    enable: true,
    package: 'egg-jwt',
 },

打开项目下conifg -> config.default.js , 加入配置

 config.jwt = {
    secret: 'jwt', //jwt为自定义密钥
 };

创建中间件 app -> middleware -> jwtErr.js 文件

//jwtErr.js
'use strict';
module.exports = secret => {
  return async function jwtErr(ctx, next) {
    const token = ctx.request.header.authorization; // 若是没有 token,返回的是 null 字符串
    let decode = null;
    if (token !== 'null' && token) {
      try {
        decode = ctx.app.jwt.verify(token, secret); // 验证token
        await next();
      } catch (error) {
        console.log('error', error);
        ctx.status = 200;
        ctx.body = {
          msg: '发生错误',
          success: false,
          code: 401,
        };
        return;
      }
    } else {
      ctx.status = 200;
      ctx.body = {
        code: 401,
        msg: 'token已过期,请重新登录',
        success: false,
      };
      return;
    }
  };
};

打开 router.js 文件

module.exports = app => {
  const { router, controller, middleware } = app;
  const _jwt = middleware.jwtErr(app.config.jwt.secret); // 传入加密字符串
  router.get('/', _jwt, controller.home.index); //如果需要jwt则添加 _jwt
};

最后一步,检验是否生效
在这里插入图片描述

下一篇讲讲 eggjs 如何配合 jwt 和 mysql 进行登录注册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值