koa2实现拦截器进行登录前session校验

时间:2023-03-09 01:39:25
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 数组里。

这里要注意:登录页面和登录接口都不能拦截!!!!