Session 的使用

一、 Session 简单介绍

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

二、 Session 的工作流程

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

三、 Egg.js 中 session 的使用:

egg.js 中 session 基于 egg-session 内置了对 session 的操作

设置:

this.ctx.session.userinfo={
    name:'张三',
    age:'20'
}

获取:

var userinfo=this.ctx.session

Session 的默认设置:

exports.session = {
    key: 'EGG_SESS',
    maxAge: 24 * 3600 * 1000, // 1 day
    httpOnly: true,
    encrypt: true
};

四、 Session 在 config.default.js 中的配置

config.session={
    key:'SESSION_ID',
    maxAge:864000,
    renew: true //延长会话有效期
}

renew = true, maxAge 设置的失效时间快到期的时候,会续期.如果maxAge时间内都没有操作,则失效.

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

  • 2、cookie 相比 session 没有 session 安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗。

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

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

Last updated

Was this helpful?