Nestjs中Session的使用
一、Nestjs Session简单介绍
session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。
二、Nestjs Session的工作流程
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value)。 客户的信息都保存在session中
三、Nestjs中express-session的使用:
1、安装 express-session
cnpm install express-session --save
2、引入express-session
import * as session from 'express-session';
3.设置官方文档提供的中间件
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
4.使用 设置值 req.session.username = “张三”; 获取值 req.session.username
四、Nestjs express-session的常用参数:
app.use(session({
secret: '12345',
name: 'name',
cookie: {maxAge: 60000},
resave: false,
saveUninitialized: true
}));
行加密的字符串.这个
参数 作用 secret 一个String类型的字符串,作为服务器端生成session的签名。 name 返回客户端的key的名称,默认为connect.sid,也可以自己设置。 resave 强制保存session即使它并没有变化,。默认为true。建议设置成false。 don’t save session if unmodified saveUninitialized 强制将未初始化的session存储。当新建了一个session且未设定属性或值时,它就处于 未初始化状态。在设定一个cookie前,这对于登陆验证,减轻服务端存储压力,权限控制是有帮助的。(默认:true)。建议手动添加。 cookie 设置返回到前端key的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。 rolling 在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
五、express-session的常用方法:
req.session.destroy(function(err) { /*销毁session*/
})
req.session.username='张三'; //设置session
req.session.username //获取session
req.session.cookie.maxAge=0; //重新设置cookie的过期时间