开始一个koa2 -(4)-session

本文深入探讨了Koa2框架中Session与Cookie的工作原理与区别,包括安全性、存储位置、数据大小限制等方面,并介绍了如何在Koa2中安装和使用session中间件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。

cookie的链接: 开始一个koa2 --3--cookie存储数据

 1.工作流程:

  • 用户登录,后台生成一个会话session对象(key,value键值对),session对象保存在数据库中;
  • 向前端发送key,前端通过cookie保存key;
  • 前端每次与后台通信时都发送key,后台通过key检索会话相关的信息,以此响应前端;
  • 但是如果找不到有效的会话,那么认为用户是未登陆状态;
  • 会话会有过期时间,也可以通过一些操作(比如登出)来主动删除

 

2.安装:

koa2 原生功能只提供了cookie的操作,但是没有提供session操作.需要安装第三方中间件;

  • koa-session-minimal 适用于koa2 的session中间件,提供存储介质的读写接口 。
  • koa-mysql-session 为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。
  • 将sessionId的数据存到数据库
npm install koa-mysql-session koa-session-minimal --save
const session = require('koa-session-minimal')
const MysqlSession = require('koa-mysql-session')
let store=new MysqlSession(config.mysql_config);
// 使用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
  }

})

第一次访问; 

首次建立会话,只有response headers中有cookie. 

第二次访问;

浏览器显示  {"count":1}

第二次建立会话,request headers中也有cookie

服务器中生成了一个表;

Koa中Cookie和Session区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值