会话存储和数据库

时间:2015-11-24 15:14:54

标签: database node.js session express socket.io

我一直在尝试使用socket.io在node.js应用程序中实现身份验证和会话管理。

从我找到的几乎所有资源中,我都遇到了“会话商店”一词。

有一些开源工具可以为我们处理会话,但我们必须为他们提供会话商店

某些工具内置了内存中的会话存储空间,例如模块express-session附带内存内存中的默认,但此警告也是如此:

  

警告默认的服务器端会话存储MemoryStore故意不是为生产环境设计的。它会在大多数情况下泄漏内存,不会扩展到单个进程,而是用于调试和开发。

所以我搜索了可用的稳定会话商店,结果发现大多数名称都是我听说过的数据库

例如,我遇到的是GitHub上的list of session storesanother one

名称包括MongoDB,MySQL,SQLite,cassandra,firebase等,因此存在混淆。

所以问题是,会话存储和数据库是否相同..? (我可以这样想 - 当我们使用数据库存储会话详细信息时,我们称之为会话存储,但实际上它是一个数据库)

如果没有,它们有何不同......?

2 个答案:

答案 0 :(得分:5)

会话存储是会话数据存储在服务器上的地方。 在Web上,它通常由存储在客户端浏览器中的cookie识别。 因此,它允许您的应用识别用户并让他保持登录状态。

会话可以是内存,某些数据库,简单文件,也可以是您可以用来存储会话数据的任何其他地方。

如果您的项目使用某个数据库,您可以将会话存储配置为使用相同的数据库,以避免在服务器上有另一个数据库,仅用于会话存储。

不同会话商店之间的差异:

  • 内存会话存储将在每个应用程序重新启动时重置。也是最快的。
  • 数据库会话存储,应用程序将是安全的 重新劳克。在某些时候,你会有很多会话对象 您可能想要清理它。甚至可以从不同的应用程序访问存储在数据库中的相同会话。

答案 1 :(得分:1)

会话存储是一种将有关用户的信息存储为具有唯一标识符的会话的方法。它可以存储在内存或数据库中。如果我没有记错的话,Socket.io可以使用express app socket-express-session app中使用的同一会话(id)。

然后,您可以使用会话信息来授予/限制访问权限,例如。