koa mysql session_koa-session中间件

koa2原生功能只提供了cookie的操作,但是没有提供session操作。session就只用自己实现或者通过第三方中间件实现。在koa2中实现session的方案有一下几种

如果session数据量很小,可以直接存在内存中

如果session数据量很大,则需要存储介质存放session数据

数据库存储方案

1.将session存放在MySQL数据库中

2.需要用到中间件:

koa-session-minimal 适用于koa2 的session中间件,提供存储介质的读写接口 。

koa-mysql-session 为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。

3.将sessionId和对应的数据存到数据库

4.将数据库存储的sessionId存到页面的cookie中

5.根据cookie的sessionId去获取对于的session信息

npm i koa-session-minimal //适用于koa2 的session中间件,提供存储介质的读写接口 。

npm i koa-mysql-session //为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。

贴代码

const Koa = require('koa')

const session = require('koa-session-minimal')

const MysqlSession = require('koa-mysql-session')

const config = require('../config')

const app = new Koa()

//配置存储session信息的mysql

let store = new MysqlSession({

user:"root",

password:'',

database:'koa_demo',

host:'127.0.0.1'

})

// 存放sessionId的cookie配置

let cookie = {

maxAge: '', // cookie有效时长

expires: '', // cookie失效时间

path: '', // 写cookie所在的路径

domain: '', // 写cookie所在的域名

httpOnly: '', // 是否只用于http请求中获取

overwrite: 'false', // 是否允许重写

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 === '/' ){

// 读取session信息

ctx.session.count = ctx.session.count + 1

ctx.body = ctx.session

}

})

app.listen( config.port ,()=>{console.log(`端口号为${config.port}的node项目启动成功`);})

0b4c6aa24892

koa-session

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值