//定義容許直接訪問的url const allowpage = ['/login','/api/login'] //攔截 function localFilter(ctx) { let url = ctx.originalUrl if (allowpage.indexOf(url) > -1) { logger.info('當前地址可直接訪問') }else { if (ctx.isAuthenticated()) { if(url==='/'){ ctx.redirect('/projectList') } console.log('login status validate success') } else { console.log('login status validate fail') console.log(ctx.request.url) ctx.redirect('/login') } } } //session攔截 app.use(async (ctx, next) => { localFilter(ctx) await next() })
在使用koa-passport,koa-session中間件以後,能夠進行用戶登陸的驗證,再配合此攔截器,能夠實現進入全部頁面以前,對是否登陸作一個驗證,把不須要攔截的路由寫在api
allowpage 數組裏。
這裏要注意:登陸頁面和登陸接口都不能攔截!!!!