1. 犀牛前端部落首页
  2. Express教程

Express 使用session

Express  使用session

默认情况下,Express请求是顺序的,没有请求可以相互链接。无法知道该请求是否来自之前已经执行了请求的客户机。

除非使用某种机制,否则无法识别用户。

这就是session

当实现时,你的API或网站的每个用户将被分配一个独特的会话,这允许你存储用户状态。

我们将使用express -session模块,该模块由Express团队维护。

先安装:

npm install express-session

一旦完成,就可以在应用程序中实例化它:

const session = require('express-session')

这是一个中间件,所以您在Express using中安装它:

const express = require('express')
const session = require('express-session')

const app = express()
app.use(session({
  'secret': '343ji43j4n3jn4jk3n'
}))

完成此操作后,所有发送到应用程序路由的请求现在都使用session。

secret是惟一必需的参数,但是还有很多参数可以使用。对于您的应用程序,它应该是一个随机的唯一字符串。

会话附加到请求,因此您可以使用req.session访问:

app.get('/', (req, res, next) => {
  // req.session
}

这个对象可以用来从会话中获取数据,也可以用来设置数据:

req.session.name = 'Flavio'
console.log(req.session.name) // 'Flavio'

存储时该数据被序列化为JSON,因此可以安全地使用嵌套对象。

您可以使用会话将稍后执行的数据通信到中间件,或者在随后的请求中检索数据。

会话数据存储在哪里?这取决于如何设置express-session模块。

它可以存储会话数据

  • 内存,不是用于生产的
  • 像MySQL或Mongo这样的数据库
  • 像Redis或Memcached这样的内存缓存

https://github.com/expressjs/session中有一个很大的第三包列表,它们实现了各种不同的兼容缓存存储

所有的解决方案都将会话id存储在cookie中,并将数据保存在服务器端。客户端将在一个cookie中接收会话id,并将它与每个HTTP请求一起发送。

我们将引用该服务器端来将会话id与本地存储的数据关联起来。

内存是默认的,它不需要您进行特殊的设置,它是最简单的东西,但它仅用于开发目的。

最好的选择是像Redis这样的内存缓存,你需要设置自己的基础设施。

Express中管理会话的另一个流行包是cookie-session,它有一个很大的区别:它在cookie中存储客户端数据。我不建议这样做,因为在cookie中存储数据意味着它存储在客户端,并在用户发出的每个请求中来回发送。它的大小也有限制,因为它只能存储4千字节的数据。cookie也需要安全,但默认情况下不安全,因为安全cookie在HTTPS网站上是可能的,如果您有代理,您需要配置它们。

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/4743.html

发表评论

登录后才能评论