koa 中 cookie 和 session 的使用

2020-12-31  本文已影响0人  shadow123

cookie

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

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

options 中的参数:

示例:

ctx.cookie,set("userinfo","user",{
    maxAge:60*60*1000
})

koa 中cookie 不能直接使用中文,需要转换成 base64 字符

let data = new Buffer("名字"),toString("base64")
ctx.cookie,set("userinfo",data,{
    maxAge:60*60*1000
})

// 使用
let cookieData = ctx.cookie.get("userinfo")
new Buffer(cookieData,"base64").toString()

session

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

session 的工作流程

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

koa 中 使用 session

1.安装 koa-session

npm install koa-session --save 

2.引入 koa-session

const session = require('koa-session')

3.设置中间件

app.keys = ['some secret hurr'];
 
const CONFIG = {
  key: 'koa.sess', // cookie key
  maxAge: 86400000,// cookie 的过期时间,默认1天
  autoCommit: true, // 自动提交headers,默认为true */
  overwrite: true, // 是否可以 overwrite,默认为true */
  httpOnly: true, // 是否只有服务器可以访问httpOnly,默认为true
  signed: true, // 签名默认为true
  rolling: false, // 在每个请求时强制设置cookie。到期重置cookie过期时间。默认为false 
  renew: false, // 当会话即将到期时更新会话,因此我们可以始终保持用户登录状态。默认为 false
  secure: true, // 安全 cookie
  sameSite: null, // cookie sameSite 选项,默认null
};
 
app.use(session(CONFIG, app));

4.使用

// 设置 session
ctx.session.username = "user"

// 获取 session
ctx.session.username

cookie 和 session 的区别

1.cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
2.cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。

上一篇下一篇

猜你喜欢

热点阅读