1、一个正常项目的思惟导图
大体分为三个部分:javascript
①后台管理系统(须要登陆)java
②网站前台api
③api接口session
如下为路由结合控制器进行模块分组的例子:app
"use strict"; /** * @param {Egg.Application} app - egg application */ module.exports = app => { const { router, controller } = app; router.get("/", controller.home.index); // 后台 router.get("/admin/user", controller.admin.user.index); router.get("/admin/article", controller.admin.article.index); router.get("/admin/article/add", controller.admin.article.add); router.get("/admin/article/edit", controller.admin.article.edit); router.get("/admin/product", controller.admin.product.index); router.get("/admin/product/add", controller.admin.product.add); router.get("/admin/product/edit", controller.admin.product.edit); // api router.get("/api/user", controller.api.user.index); router.get("/api/product", controller.api.product.index); };
2、后管系统登陆前作认证,须要写一个中间件。async
①middleware下新建admin_auth.js,写入以下内容:网站
module.exports = (option, app) => { return async function auth(ctx, next) { // 若是session存在表示以登陆 继续访问,若是session不存在表示没有登陆,跳转到首页 if (ctx.session && ctx.session.userInfo) { await next(); } else { if (ctx.request.url == "/") { await next(); } else { ctx.redirect("/"); } } }; };
②配置中间件,使其生效。url
config.middleware = ["adminAuth"];
③中间件配置完成,可是访问全部url都会执行中间件,若是须要按需执行,只想在访问后管的时候执行,则:spa
先注释掉config>config.default.js中的middleware配置,在router.js中引入中间件并局部注册,写在每个理由规则中的第二个参数:code
②还有一种方法就是中间件配置match作匹配。
// add your middleware config here config.middleware = ["adminAuth"]; config.adminAuth = { match: "/admin" };
有'/admin'的路径都会执行adminAuth中间件。到此实现了一个后管类系统最简单地模拟认证效果。