egg學習筆記第十二天:eggjs結合簡易項目實現路由分組以及按需加載中間件

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中間件。到此實現了一個後管類系統最簡單地模擬認證效果。

相關文章
相關標籤/搜索