首页 > 语言 > JavaScript > 正文

express express-session的使用小结

2024-05-06 15:27:19
字体:
来源:转载
供稿:网友

简介

express-session是express中的一个处理session的中间件,可以说是express中最常见的中间件之一了.

由于会话管理依赖cookie的使用,所以它的api中有很多用于控制cookie的部分.

总的来说express-session有如下的特点:

session管理(基本功能) cookie签名 可替换持久储存模块

本文中使用的版本为1.15.6.

安装

npm install express-session --save

引入&使用

const express = require('express');const app = new express();const expressSession = require('express-session');// 使用express-sessionapp.use(expressSession({  secret:'hello world',// cookie签名 这个属性是必须的 具体配置和`cookie-parser`一样  saveUninitialized:true, // 是否自动初始化 默认为true  resave:false,// 当用户session无变化的时候依然自动保存  cookie:{ // cookie的信息具体操作和`cookie-parser`一样    maxAge:1800000// 30分钟后过期  },  rolling:true// 每次请求的时候覆写cookie}))

会话简介

在express-session文档中有如下的一句说明:

Note Session data is not saved in the cookie itself, just the session ID. Session data is stored server-side.

Session中包含的数据不会保存在cookie中,仅仅是在cookie中保存了一个SessionId而已.实际的session的数据保存在服务端.

简单理解就是一个Map,键对应的是session id值保存在cookie中,值对应的是用户保存在服务端的数据.

api介绍

参数

创建express-cookie参数基本分为两种.

针对于cookie的设置 针对于express-session的设置

cookie设置一览:

app.use(expressSession({  secret:'hello world', // cookie 签名必须有否则会报错  cookie:{    domain:<参数>,    expires:<参数>,    httpOnly:<参数>,    path:<参数>,    sameSite:<参数>,    secure:<参数>,    maxAge:1800000  }}));

而这些对应的参数就是服务端对于cookie的写入参数,至于各个参数是什么意思参考下面的文章:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie

express-session部分设置:

app.use(expressSession({  secret:'hello world', // cookie 签名必须有否则会报错  genid:function (request) { // 用于替换掉默认ID生成的函数 第一个参数为reqeust    return '随机id'  },  name:'connect.sid',// 每次响应中向cookie中起始的内容,默认起始为`connect.sid`,  proxy:true,// 对于cookie使用secure后,在传递的过程中相信反向代理服务器,默认为undefined只相信正向代理  resave:true,// 在一次会话中无论是否session被改变都会进行强制的储存  rolling:true,// 在每次会话中的响应中都覆写一次cookie,重置倒计时  saveUninitialized:true,// 将一个新创建还未修改的会话进行储存,默认为true  store:object// 一个储存对象,默认使用的是`MemoryStore`这个存储器  unset:'keep'// 控制没有设置`req.session`时候的行为(使用delete删除或者赋值null),默认'keep'会话期间不会保留,'destroy'会话完成后删除.}));            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选