一、 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 //延长会话有效期
}
五、 Cookie和Session区别
1、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
2、cookie 相比 session 没有 session 安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE
欺骗。
3、session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用 COOKIE。
4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。
demo :
home.js控制器
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
//设置session
this.ctx.session.username='张三';
this.ctx.session.userinfo={
name:'李四',
age:20
}
//设置session的过期时间 修改session的默认参数 不建议用这样的方式
// this.ctx.session.maxAge=5000;
await this.ctx.render('home');
}
}
module.exports = HomeController;
new,js 控制器
'use strict';
const Controller = require('egg').Controller;
class NewsController extends Controller {
async index() {
var username=this.ctx.session.username;
var userinfo=this.ctx.session.userinfo;
//设置session的过期时间 修改session的默认参数 不建议用这样的方式
// this.ctx.session.maxAge=5000;
console.log(userinfo);
await this.ctx.render('news',{
username:username
});
}
}
module.exports = NewsController;
config.default.js
'use strict';
module.exports = appInfo => {
const config = exports = {};
//配置session session的配置和cookie基本是一样的,可以使用cookie里面的配置
config.session={
key:'SESSION_ID', //设置session cookie里面的key
maxAge:30*1000*60,
httpOnly:true,
encrypt:true,
renew:true //renew等于true 那么每次刷新页面的时候 session都会被延期
}
// add your config here
config.middleware = [];
//配置模板引擎
config.view = {
mapping: {
'.html': 'ejs',
},
};
return config;
};
来源:oschina
链接:https://my.oschina.net/u/4297014/blog/4308969