工程实践
使用koa-session进行路由拦截
路由拦截的意义 根据标识(session)来判断用户是否是合法用户,为了保证这个表示的安全性,这个标识可由服务端生成,并且客户端不能随意修改,每次客户端在请求接口前,必须要查询session的合法性。 session与路由拦截 session:存储在cookie中的一种识别用户身份和行为的有效信息。 所谓拦截就是在用户指定行为前,进行session校验,判断是否是合法用户 常用的常用的拦截有三种:
路由拦截的意义 根据标识(session)来判断用户是否是合法用户,为了保证这个表示的安全性,这个标识可由服务端生成,并且客户端不能随意修改,每次客户端在请求接口前,必须要查询session的合法性。 session与路由拦截 session:存储在cookie中的一种识别用户身份和行为的有效信息。 所谓拦截就是在用户指定行为前,进行session校验,判断是否是合法用户 常用的常用的拦截有三种:
根据标识(session)来判断用户是否是合法用户,为了保证这个表示的安全性,这个标识可由服务端生成,并且客户端不能随意修改,每次客户端在请求接口前,必须要查询session的合法性。
const session = require('koa-session');
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess',
maxAge: 86400000, //这个是确定cookie的有效期,默认是一天。
overwrite: true,
httpOnly: true, //表示是否可以通过javascript来修改,设成true会更加安全
signed: true, //cookie的安全性 会自动给cookie加上一个sha256的签名
rolling: false, //这两个都是涉及到cookie有效期的更新策
renew: false, // 这两个都是涉及到cookie有效期的更新策
};
app.use(session(CONFIG, app));
let home = new Router();
// 每次在get请求前进行判断
home.get("/",async (ctx)=>{
if (ctx.path === '/favicon.ico') return;
let n = ctx.session.views || 0;
ctx.session.views = ++n;
if(n==17){
throw new Error({
success:1
})
}else{
ctx.body ={
success:0
};
}
})
const router = new Router();
router.use("/",home.routes())
app.use(router.routes());
app.listen(1111);
axios.interceptors.response.use(
response => {
return response;
},
error => {
if (error.response.success === 1) {
router.push('/login');
}
return Promise.reject(error);
}
)
暂无评论
确认操作
请再次确认编辑图片
待上传图片 (剩余 0 张)
项目详情
确认评论邮箱
邀请制评论