发布时间:
这里只列出 CmsWing 特有的,更详细的内容请阅读 Egg.js 文档 路由(Router)
Router 主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系, 框架约定了 app/router.js
文件用于统一所有路由规则。通过统一的配置,我们可以避免路由规则逻辑散落在多个地方,从而出现未知的冲突,集中在一起我们可以更方便的来查看全局的路由规则。CmsWing 后台继承了路由管理,无需在 router.js里手动配置。
路由的归类,比如 我们系统分为,前台,后台,分类下面的路由会继承 分类的 中间件。如果该分类下的某个路由不行继承可以在路由内排除。
页面是指系统后台的页面,是用 amis 构建,目前只在 【后台】有用。
通常后台需要登录后才能访问,那么我们可以通过中间件来实现,比如我们编写一个 authAdminToken.js 中间件来验证用户登录,放置在 app/middleware/sys 目录下
// app/middleware/sys/authAdminToken.js
module.exports = options => {
return async function authAdminToken(ctx, next) {
// 支持 options.exclude
if (options && ctx.helper._.find(options.exclude, o => ctx.url.indexOf(o) !== -1)) return await next();
const token = ctx.session.adminToken || ctx.get('token');
const userInfo = ctx.helper.deToken(token);
if (userInfo) {
ctx.userInfo = userInfo;
await next();
} else {
if (ctx.request.accepts([ 'json', 'html' ]) === 'html') {
ctx.session.adminToken = null;
ctx.redirect('/admin/login');
} else {
ctx.body = {
status: 401,
msg: '未登录',
data: { isLogin: false },
};
}
}
};
};
创建完成后就可以在分类里面选择这个中间件
如果在后台分类有些路由不需要登录验证,比如登录路由不需要登录后才可以访问,那么我们在添加路由的时候可以选择排除这个中间件
最后更新时间: 2023-10-03 23:42:53