代码地址 https://github.com/MoceptWeb/...
看以前肯定至少了解了egg的文档了, 否则看下面是浪费时间哈;本人只写了重点须要注意的地方!不对的地方请多多指教
若是代码还不完善还不想发布,能够直接在项目文件中 npm link npm包目录文件夹
name和eggPlugin字段javascript
"name": "@node/egg-passport-jyb", // 包名 "eggPlugin": { "name": "passportJyb" 这里是在egg中真正用到的name },
config.passportJyb = { 'menu_code': 'loan_manage' };
exports.passportJyb = { enable: true, package: '@node/egg-passport-jyb' };
我的建议extend中的方法尽可能当前插件相关的加前缀, 防止互相干扰java
或者挂一个你的对象,方法在它上面便可,如 app.passport.xx
暴露方法给外部项目直接调用node
统一封装了内部请求和mysql链接(多数据和单数据库链接的区分),操做mysql
async passportMysqlConnect() { const portalConfig= this.app.config['passportJyb'] let mysqlConnect = null; if(portalConfig.userDBClient) { mysqlConnect = this.app.mysql.get(portalConfig.userDBClient) } else { mysqlConnect = this.app.mysql } if(!mysqlConnect) { this.ctx.logger.error('数据库链接数据'); } return mysqlConnect; }
则是一些数据相关的操做git
在app.js入口控制插件中的全部middleware执行顺序github
固然能够加入配置项目, 指定在哪一个外部项目中的middleware以后, 看各项目需求
module.exports = app => { // 将 static 中间件放到 bodyParser 以前 const index = app.config.coreMiddleware.length; // const index = app.config.coreMiddleware.indexOf('bodyParser'); // assert(index >= 0, 'bodyParser 中间件必须存在'); app.config.coreMiddleware.splice(index, 0, 'passportJybAuth'); };
在passportJybAuth中间件中 能够无需auth便可请求, 插件尽可能可拓展sql