koa2-cookie-session
node.js的path.extname方法使用
由于该方法属于path模块,使用前需要引入path模块(var path= require(“path”) )
接收参数:
p path 路径
path.extname('index.html') // returns '.html' path.extname('index.') // returns '.' path.extname('index') // returns 空'
node.js中的path.join方法使用说明
方法说明:
将多个参数组合成一个 path (详细请看例子)
path.join([path1], [path2], [...])
由于该方法属于path模块,使用前需要引入path模块(var path= require(“path”) )
例子:
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') // returns '/foo/bar/baz/asdf' path.join('foo', {}, 'bar') // throws exception TypeError:参数路径。加入必须是字符串 TypeError: Arguments to path.join must be strings
cookie
koa2使用cookie app.use(async(ctx)=>{ if(ctx.url === '/index'){ //ctx.cookie.get() 读取上下文请求中的cookie ctx.cookies.set( // 写入cookie 'cid', //cookie 的name 'hello world', // cookie 的value { domian:'localhost',//写入cookie所在的域名 path: '/index', //写入cookie所在的路径 maxAge: 20*60*1000, //cookie有效时间 httpOnly: false,//是否只用于http请求中获取 overwrite: false//是否允许重写 } ) ctx.body = 'cookie is ok' }else{ ctx.body = 'hello world' } })
session
数据库存储方案
将session存放在MySQL数据库中
需要用到中间件
koa-session-minimal 适用于koa2 的session中间件,提供存储介质的读写接口 。
koa-mysql-session 为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。
将sessionId和对于的数据存到数据库
将数据库的存储的sessionId存到页面的cookie中
根据cookie的sessionId去获取对于的session信息
首先需要natvicat中建一个数据库
//配置存储session信息的mysql let store = new MysqlSession({ user: 'root',//数据库用户名 password: 'abc123',//用户密码 database: 'koa_demo',//数据库名 host: '127.0.0.1',//数据库默认地址 }); //cookie session 文件配置 let cookie = { maxAge:'',//cookie过期时间 path:'',//写入cookie所在的路径 domain:'',//写入cookie所在的域名 httpOnly: false,//是否只用于http请求 overwrite:'',//是否准许重写 secure: '', sameSite: '', signed: '', } //使用session 中间件,把上面配置的信息加载到session中间件中 //session 必须是一个方法 所以app.use(session({})) app.use(session({ key: 'SESSION_ID',//Name store: store, cookie: cookie })); app.use(async(ctx)=>{ //访问/set 设置session if (ctx.url === '/set' ) { ctx.session = { user_id:Math.random().toString(36).substr(2), count: 0 } ctx.body = ctx.session; //否则 访问根目录 读取session数据 }else if(ctx.url === '/'){ //读取session 数据 ctx.session.count = ctx.session.count + 1 ctx.body = ctx.session } })