当前位置: 首页 > 后端技术 > Node.js

nodejs轻量级框架Koa2实现session功能

时间:2023-04-03 20:09:30 Node.js

写在前面,这里不介绍koa2,主要介绍koa2对session功能的实现。入口文件app.jsconstKoa=require('koa')//v2.7.0constapp=newKoa()constjson=require('koa-json')constbodyparser=require('koa-bodyparser')constsession=require('koa-generic-session')//v2.1.1constredisStore=require('koa-redis')//v4.0.1//routerconstuser=require('./routes/user')app.use(user.routes(),user.allowedMethods())//解析请求bodyapp.use(bodyparser({enableTypes:['json','form','text']}))app.use(json())//session配置主要看这里!!!app.keys=['abc123']//用于加密cookie,可以随意写一个字符串,//禁止客户端通过js脚本修改cookiemaxAge:24*60*60*1000//cookie过期时间这里设置为1天},//配置redisstore:redisStore({all:'127.0.0.1:6379'//这里使用本地redis服务,默认端口为6379})}))module.exports=app这样配置好了,那么我们写一个route进行测试,在routers/user.js中写入如下代码:constrouter=require('koa-router')()router.prefix('/api/user')//测试sessionrouter.get('/session-test',asyncfunction(ctx,next){if(ctx.session.viewCount==null){ctx.session.viewCount=0}ctx.session.viewCount++ctx.body={错误号:0,viewCount:ctx.session.viewCount}})module.expor![image.png](/img/bVcRyle)然后,我们运行项目,打开地址http://localhost:8000/api/use...然后,刷新页面,你会看viewCount的值一直在增加:这时候去redis客户端看是否已经存储:再看浏览器的cookie:redis数据库和cookie都存储了。这时候,如果最后验证了多个用户,会不会互相影响?这时候,再打开一个浏览器,同样输入http://localhost:8000/api/use...可以发现在新打开的浏览器,viewCount字段的值为1,而之前打开的浏览器的viewCount值仍然是5,刷新当前浏览器,viewCount会自动增加,不会影响viewCount中的值之前打开的浏览器![Uploading...]()到这里,session功能就基本实现了