目录
- egg.js 配合 jwt 进行鉴权
- egg.js 配置 mysql 以及简单登录实现
- eggjs+mysql实现图片上传
- eggjs 实现增删改查
- eggjs 搭配 vue+axios 实现登录和获取用户信息
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
};
最后一步,检验是否生效