9.2KOA Session
2020-01-06 本文已影响0人
帶頭二哥
Session
导言
- koa2 原生功能只支持
Cookies
,不支持Session
功能。只能用第三方中间件实现。 - session 选择方案
- 如果session数据量很小,可以直接存在内存中
- 如果session数据量很大,则需要存储介质存放session数据
MySql数据库存储Session方案
所需中间件
koa-session-minimal
提供存储介质的读写接口
koa-mysql-session
为
koa-session-minimal
中间件提供MySQL数据库的session
数据读写操作
项目实现
安装
- 安装 Mysql 数据库
- 安装中间件
npm install koa-session-minimal --save npm install koa-mysql-session --save
- 实战案例
// 引入 koa 模块 const Koa = require('koa') // 创建 koa 应用 const app = new Koa() // session 中间件接口 const session = require('koa-session-minimal') // session mysql 实现 const MysqlSession = require('koa-mysql-session') // 配置存储session信息的mysql let store = new MysqlSession({ user: 'root', password: '123456', database: 'koa', host: '127.0.0.1', }) // 存放sessionId的cookie配置 let cookie = { maxAge: '', // cookie有效时长 expires: '', // cookie失效时间 path: '', // 写cookie所在的路径 domain: '', // 写cookie所在的域名 httpOnly: '', // 是否只用于http请求中获取 overwrite: '', // 是否允许重写 secure: '', sameSite: '', signed: '', } // 使用session中间件 app.use(session({ key: 'SESSION_ID', store: store, cookie: cookie })) app.use( async ( ctx ) => { // 设置session if ( ctx.url === '/set' ) { ctx.session = { user_id: Math.random().toString(36).substr(2), count: 0 } ctx.body = ctx.session } else if ( ctx.url === '/get' ) { // 读取session信息 ctx.session.count = ctx.session.count + 1 ctx.body = ctx.session } }) // 启动应用 app.listen(3000)