koa2原生功能只提供了cookie的操作,但是没有提供session操作。session就只用自己实现或者通过第三方中间件实现。在koa2中实现session的方案有一下几种
demo源码
https://github.com/ChenShenhai/koa2-note/blob/master/demo/session/index.js
const Koa = require('koa')const session = require('koa-session-minimal')const MysqlSession = require('koa-mysql-session')const app = new Koa()// 配置存储session信息的mysqllet store = new MysqlSession({user: 'root',password: 'abc123',database: 'koa_demo',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 ) => {// 设置sessionif ( 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 + 1ctx.body = ctx.session}})app.listen(3000)console.log('[demo] session is starting at port 3000')
node index.js