Koa2中Session koa-session的使用

大神应用session登录文章点击直达

一、Koa-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.引入express-session

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

3.设置官方文档提供的中间件

const session_signed_key = ["some secret hurr"];  // 这个是配合signed属性的签名key
const session_config = {
    key: 'koa:sess', /**  cookie的key。 (默认是 koa:sess) */
    maxAge: 4000,   /**  session 过期时间,以毫秒ms为单位计算 。*/
    autoCommit: true, /** 自动提交到响应头。(默认是 true) */
    overwrite: true, /** 是否允许重写 。(默认是 true) */
    httpOnly: true, /** 是否设置HttpOnly,如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。  (默认 true) */
    signed: true, /** 是否签名。(默认是 true) */
    rolling: true, /** 是否每次响应时刷新Session的有效期。(默认是 false) */
    renew: false, /** 是否在Session快过期时刷新Session的有效期。(默认是 false) */
};

我们需要关注这几个配置:

  • renew rolling
    这两个都可以在用户访问的过程中刷新有效期,不至于让用户访问过程中Session过期成为未登录状态

  • signed
    这个是对客户端Cookie的签名,也就是用一个特点的字符加密,保证客户端Cookie不会被伪造出来

  • httpOnly
    打开这个使得通过程序(JS脚本、Applet等)无法读取Cookie,大大提高了安全性

  • maxAge
    以ms为单位的过期时间

4.使用

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

四、Koa中Cookie和Session区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

你可能感兴趣的:(Koa2中Session koa-session的使用)