目录结构
router.js控制器分组织,判断能不能进入admin
文件内容
文件名是下划线,方法名要转为驼峰,如admin_auth
toadminAuth
middleware/admin_auth.js
module.exports = (options, app) => {
return async function adminAuth(ctx, next) {
// 如果session存在,表示可以登录,粥访问
// 如果不存在,表示没有登录,跳转到首页
console.log(options); // config.default.js中定义的参数
console.log(new Date());
await next();
if(ctx.session && ctx.session.userinfo){
await next();
}else{
if(ctx.request.url === '/'){
await next();
}else{
ctx.redirect('/')
}
}
};
};
router.js
const adminAuth = app.middleware.adminAuth();
router.get('/admin/article',adminAuth, controller.admin.article.index);
router.get('/admin/user', adminAuth,controller.admin.user.index);
// api接口
router.get('/api/article', controller.api.article.index);
router.get('/api/user', controller.api.user.index);
效果
- http://localhost:7001/ 可以
- http://localhost:7001/api/user 可以
- http://localhost:7001/admin/user 不可以,重新跳转到http://localhost:7001/
第二种配置
middleware/admin_auth.js
module.exports = (options, app) => {
return async function adminAuth(ctx, next) {
// 如果session存在,表示可以登录,粥访问
// 如果不存在,表示没有登录,跳转到首页
if(ctx.session && ctx.session.userinfo){
await next();
}else{
if(ctx.request.url === '/'){
await next();
}else{
ctx.redirect('/')
}
}
};
};
router.js
router.get('/admin/article',controller.admin.article.index);
router.get('/admin/user',controller.admin.user.index);
config/config.default
config.middleware = [ 'auth', 'compress','adminAuth' ];
config.adminAuth = {
match : '/admin'
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。