nodejs学习笔记21-koa中使用Session

377 阅读2分钟

简介

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

session与cookie的区别

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

session 工作流程

当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于 key,value 的键值对, 然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)。 客户的信息都保存在 session 中。

与Cookie 不一样 需要安装koa-session 中间件

1.安装

npm install koa-session

2.引入

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

3.配置中间件

app.keys = ['some secret hurr'];
const CONFIG = {
  key: 'koa.sess', /** (string) cookie key (default is koa.sess) */
  /** (number || 'session') maxAge in ms (default is 1 days) */
  /** 'session' will result in a cookie that expires when session/browser is closed */
  /** Warning: If a session cookie is stolen, this cookie will never expire */
  maxAge: 1000 * 1000, // 过期时间 单位毫秒
  autoCommit: true, /** (boolean) 是否自动提交请求头 (default true) */
  overwrite: true, /** (boolean) 是否允许覆盖 (default true) */
  httpOnly: true, /** (boolean) 是否只能在服务端使用 (default true) */
  signed: true, /** (boolean) 是否签名 (default true) */
  rolling: false, /** (boolean) 在每次请求时强行设置 cookie,这将重置 cookie 过期时间 (default is false) */
  renew: true, /** (boolean) 会话即将过期时续订会话 (default is false)*/
  secure: false, /** (boolean) 是否启用https*/
  sameSite: null, /** (string) session cookie sameSite options (default null, don't set it) */
};

app.use(session(CONFIG, app));

4.使用

设置值: ctx.session.username = "张三"
获取值: ctx.session.username