关于node.js:nodejs轻量级框架Koa2实现session功能

3次阅读

共计 1400 个字符,预计需要花费 4 分钟才能阅读完成。

写在后面,这里不对 koa2 做介绍,次要介绍一下 koa2 实现 session 性能。

入口文件app.js

const Koa = require('koa')  // v2.7.0
const app = new Koa()
const json = require('koa-json')
const bodyparser = require('koa-bodyparser')
const session = require('koa-generic-session') // v2.1.1
const redisStore = require('koa-redis')  // v4.0.1
// router
const user = require('./routes/user')

app.use(user.routes(), user.allowedMethods())
// 解析 request body
app.use(bodyparser({enableTypes:['json', 'form', 'text']
}))
app.use(json())

//session 配置  次要看这里!!!app.keys = ['abc123']    // 加密 cookie 用,能够随便写一个 string
app.use(session({
  cookie: {
    path: '/',           // 我的项目根门路,示意 cookie 用于整个我的项目
    httpOnly: true,      // 禁止客户端通过 js 脚本批改 cookie
    maxAge: 24 * 60 * 60 * 1000  // cookie 过期工夫 这里设置 1 天
  },
  // 配置 redis
  store: redisStore({all: '127.0.0.1:6379'  // 这里用本地 redis 服务,默认端口 6379})
}))

module.exports = app

这样就配置好了,接下来咱们写一个路由进行测试,在 routers/user.js 中写入以下代码:

const router = require('koa-router')()

router.prefix('/api/user')

// 测试 session
router.get('/session-test', async function (ctx, next) {if (ctx.session.viewCount == null) {ctx.session.viewCount = 0}
    
    ctx.session.viewCount ++

    ctx.body = {
        errno: 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 的值

![上传中 …]()

到这里,session 性能已根本实现。

正文完
 0