koa2实现拦截器进行登录前session校验
//定义允许直接访问的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中间件之后,可以进行用户登录的验证,再配合此拦截器,可以实现进入所有页面之前,对是否登录做一个验证,把不需要拦截的路由写在
allowpage 数组里。
这里要注意:登录页面和登录接口都不能拦截!!!!