koa2中cookie和session的使用

cookie

● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。

● HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。

作用

  • 保存用户信息
  • 浏览器历史记录
  • 猜你喜欢
  • 10天免登陆
  • 多个页面之间的数据传递
  • 实现购物车

Koa 中设置 Cookie 的值

ctx.cookies.set(name,value,[options])

通过options 设置 cookiename 的value

options名称 options值
maxAge 一个数字表示从 Date.now() 得到的毫秒数
expires cookie 过期的Date
path cookie 路径, 默认是’/’
domain cookie 域名 secure 安全 cookie 默认 false,设置成 true 表示 只有 https 可以访问
httpOnly 是否只是服务器可访问 cookie, 默认是true
overwrite 一个布尔值,表示是否覆盖以前设置的同名 的 cookie(默认是 false). 如果是 true, 在同 一个请求中设置相同名称的所有 Cookie(不 管路径或域)是否在设置此 Cookie 时从 Set-Cookie 标头中过滤掉。

Koa 中获取 Cookie 的值

ctx.cookies.get('name');

Koa 中设置中文 Cookie

console.log(new Buffer('hello, world!').toString('base64'));// 转换成base64字符 串:aGVsbG8sIHdvcmxkIQ==
console.log(new Buffer('aGVsbG8sIHdvcmxkIQ==', 'base64').toString());// 还原base 64字符串:hello, world!

session

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

Session 的工作流程

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

koa-session 的使用:

  1. 安装 express-session
npm install koa-session --save
  1. 引入express-session
const session = require('koa-session');
  1. 设置官方文档提供的中间件
app.keys = ['some secret hurr'];
const CONFIG = {
	key: 'koa:sess', //cookie key (default is koa:sess)
	maxAge: 86400000, // cookie 的过期时间 maxAge in ms (default is 1 days)
	overwrite: true, //是否可以 overwrite (默认 default true)
	httpOnly: true, //cookie 是否只有服务器端可以访问 httpOnly or not (default true)
	signed: true, //签名默认 true
	rolling: false, //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
	renew: false, //(boolean) renew session when session is nearly expired,
};
app.use(session(CONFIG, app));
  1. 使用
设置值 ctx.session.username = "张三";
获取值 ctx.session.username

Cookie 和 Session 区别

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

你可能感兴趣的:(koa2,koa2,cookie,session)