NestJS Session(会话)

165 阅读1分钟

安装依赖包

$ 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的过期时间