1.0.1 • Published 3 years ago

pwegg v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

egg

egg-cors egg-mysql crypto加密 jsonwebtoken生成token vali

在config/plugin.js 开启插件

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

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

'egg-validate':{ enable:true, package:'egg-validate'

}

在config/config.delault.js 注册插件

'cors':{//后端跨域 origin:'*', allowMethods:'GET,PUT,POST,DELETE' }

security:{ //关闭防火墙 csrf:{ enable:false } } 'validate': {//类型判断 convert: true, // 对参数可以使用 convertType 规则进行类型转换 // validateRoot: false, // 限制被验证值必须是一个对象。

}

创建一个文件夹 db.js const crypto=require('crypto') //创建md5加密规则 const md5=(content)=>{ let md5=crypto.createHash('md5') return md5.update(content).digest('hex') } //接收密码状态 const getPassword=(password)=>{ let str=password=${password}&secret=hss return md5(str) }

module.exports=getPassword

validate 类型判断 let err= this.app.validator.validate({username:'string',password:'string'},ctx.request.body)

const err = ctx.validate({ user: 'string', pas: 'number' }, ctx.query)

token

axios 拦截 挂载 token config.headers.authorization=Cookie.get('token')

生成token jwt.sign(data.username, '1902A'); 解析token jwt.verify(token, '1902A'); // 获取用户信息 async getUserInfo() { const { ctx, app } = this; const { authorization } = ctx.request.headers; // 获取token const token = authorization.split(' ')1; const username = jwt.verify(token, '1902A'); // // 通过解密后的token 在表中查找用户信息 const data = await app.mysql.get('userlist', { username }); // 删除对象中的密码字段 delete data.password; ctx.body = { code: 1, msg: '请求成功', data, };

}

封装鉴权 app/middleware/auth.js 'use strict'; const jwt = require('jsonwebtoken'); module.exports = () => { return async function auth(ctx, next) { // 获取前端传来的token const { authorization } = ctx.request.headers; // 获取token const token = authorization.split(' ')1; try { // 尝试运行 try函数 jwt.verify(token, '1902A'); await next(); } catch (error) { // 如果try函数监听到运行失败 运行catch console.log('解密失败'); ctx.body = { code: 0, msg: '请重修登录', }; } }; }; eg:
const { router, controller, middleware } = app; // 获取用户信息 router.post('/api/userinfo', middleware.auth(), controller.login.getUserInfo);

1.0.1

3 years ago

1.0.0

3 years ago