前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Egg 设置与获取Session

Egg 设置与获取Session

作者头像
越陌度阡
发布2020-11-26 12:50:49
1.5K0
发布2020-11-26 12:50:49
举报

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

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

Session的设置代码如下:

代码语言:javascript
复制
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
    async index() {
        // 设置session信息
        this.ctx.session.userInfo = {
            name: 'Augus',
            age: 18
        }
        // 设置session的过期时间(不建议用这样的方式,建议在config中设置)
        // this.ctx.session.maxAge=5000; 
        await this.ctx.render('home');
    }
}

module.exports = HomeController;

Session的配置和cookie基本是一样的,可以使用cookie里面的配置,配置选项在官网有非常全面的介绍,常见的配置选项如下:

代码语言:javascript
复制
// config.default.js
'use strict';
module.exports = appInfo => {
    const config = exports = {};
    // use for cookie sign key, should change to your own and keep security
    config.keys = appInfo.name + '_1532511512428_3477';

    // 配置session
    config.session = {
        // 设置session cookie里面的key
        key: 'SESSION_ID',
        // 设置最大的过期时间
        maxAge: 30 * 1000 * 60,
        // 设置是否只服务端可以访问
        httpOnly: true,
        // 设置是否加密
        encrypt: true,
        // 设置为true每次刷新页面的时候session都会被延期
        renew: true
    }

    // 配置模板引擎
    config.view = {
        mapping: {
            '.html': 'ejs',
        },
    };
    return config;
};

Session的获取代码如下:

代码语言:javascript
复制
'use strict';
const Controller = require('egg').Controller;
class NewsController extends Controller {
    async index() {
        // 获取session的信息
        var userInfo = this.ctx.session.userInfo;
        // 将用户的信息渲染到模板文件上面
        await this.ctx.render('news', {
            userInfo: userInfo
        });
    }
}

module.exports = NewsController;

Cookie 和 Session 区别如下:

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档