Open
Description
server/src/routes/index.js中
// 注册路由中间件, 需要在注册路由地址之前使用
loginRouter.use(PrivilegeChecker.checkLogin)
loginProjectRouter.use(PrivilegeChecker.checkPrivilege)
注册中间件在注册路由地址之前使用,的确会提前检测login和privilege,但是对于应该返回404的路由,就无法正常通过了。
建议优化: 注册中间件的时机,应该注册路由地址之后,加入URL进行过滤。
代码如下:
for (let url of Object.keys(routerConfigMap)) {
let routerConfig = routerConfigMap[url];
if (routerConfig.needLogin) {
// 需要登录
loginRouter.use(url, PrivilegeChecker.checkLogin);
if (routerConfig.needProjectId) {
// 需要校验项目权限
loginProjectRouter.use(url, PrivilegeChecker.checkPrivilege);
Logger.log(`需要登录,也需要检验项目权限(Method: ${routerConfig.methodType}) =>`, url);
registerRouterByMethod(loginProjectRouter, routerConfig, url)
} else {
// 不需要校验项目权限
Logger.log(`需要登录,但不需要检验项目权限(Method: ${routerConfig.methodType}) =>`, url)
registerRouterByMethod(loginCommonRouter, routerConfig, url)
}
} else {
Logger.log(`不需要登录(Method: ${routerConfig.methodType}) =>`, url)
// 不需要登录
registerRouterByMethod(withoutLoginRouter, routerConfig, url)
}
}
Metadata
Metadata
Assignees
Labels
No labels