安装依赖包
$ npm i express-session
$ npm i -D @types/express-session
应用为全局中间件
将 express-session 中间件应用为全局中间件(例如,在 main.ts 文件中)。
import * as session from 'express-session';
// 在你初始化文件的地方
app.use(
session({
secret: 'my-secret',
resave: false,
saveUninitialized: false,
}),
);
//app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}))
使用session
@Get()
findAll(@Req() request: Request) {
request.session.username = "张三";//设置值
console.log(request.session.username);//获取值
}
express-session 常用参数
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的过期时间