使用Express.js,会话非常简单.但我很好奇它们到底是怎么工作的.

它是否在客户端存储了一些cookie?如果是,我在哪里能找到那块cookies ?如果需要,我如何解码?

我基本上希望能够看到用户是否登录,即使用户当时并不在该网站上(比如facebook如何知道你在其他网站上登录).但我想我应该首先理解会话是如何工作的.

推荐答案

我从来没用过express .js,尽管根据their documentation关于这个主题的报道,它听起来像:

  • cookie存储在客户机上,带有一个密钥(服务器将使用该密钥检索会话数据)和一个哈希(服务器将使用该哈希来确保cookie数据未被篡改,因此如果您try 更改一个值,cookie将无效)

  • 会话数据,而不是某些框架(例如Play Framework!)在服务器上保存,因此cookie更像是会话的占位符,而不是实际会话数据的持有者.

  • here开始,服务器上的会话数据似乎默认保存在内存中,尽管可以更改为实现适当API的任何存储形式.

所以,如果你想在没有特定的req请求对象的情况下进行判断,就像你说的,你只需要访问相同的存储.在第一个文档页面的底部,它详细说明了存储需要实现的方法,因此,如果您熟悉存储API,可能可以执行.getAll()(如果存在类似的情况),循环访问会话数据,并读取您想要的任何值.

Node.js相关问答推荐

如何解决无法获得本地颁发者证书的问题

Node.js中Redis的并发问题

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

在 azure blob 容器之间复制文件

如何解决未调用 Express 错误处理程序的问题

node Axios 创建全局令牌变量以在单独的变量头中使用

错误:找不到模块'C:\Users\nguye\AppData\Local\nodejs\node_modules\npm\bin\npm-cli.js'

discordjs如何添加所有意图/权限

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

部署云功能 Firebase/Stripe 时出错

无法通过谷歌Electron 表格 api( node js)中的服务帐户访问写入

如何刷新 youtube-data-api v3 的访问令牌

如何从 github 编译第三方扩展?

为什么在调用数据库调用时我的参数没有定义?

使用 mongoose 查找过go 7 天的注册用户总数

如何使动态私有IP地址静态?

等到文件上传完成的有效方法(mongoose )

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

node.js(ES6 / Babel)中 import X 和 import * as X 的区别?

fs.createWriteStream 不会立即创建文件?