一般用户会话处理(Nodejs)

时间:2013-02-07 15:24:04

标签: node.js mongodb session

我用nodejsexpress写了一个简单的网络服务器。我用电子邮件用户名和密码实现了用户身份验证。此外,我有一个remember-function,它将用户id和pwd哈希存储到cookie中。现在,我希望在用户关闭浏览器或点击退出按钮时结束额外的会话。

实施的最佳做法是哪种方式?会话是否与具有过期时间的remember-function相同,并且在每个请求中我必须检查数据库的凭据? (我对此不太确定)

我正在使用的技术:nodejsexpressmongodb

这不仅仅是nodejs个问题,我更倾向于对问题进行一般性解释。

2 个答案:

答案 0 :(得分:1)

让我先把它弄清楚;将密码哈希存储到cookie中将允许任何人在他们具有密码哈希时登录,并且如果由于某种原因密码哈希暴露,那将是灾难性的。加密cookie很好,但是不允许存储在数据库中的实际哈希用于身份验证。如初。

关于重新身份验证,Node是一种在单个线程上运行的技术,可通过在多个处理器和/或计算机上运行更多实例来扩展。保持会话是避免访问数据库的好主意,但您还必须考虑该体系结构。如果您使用存储在文件中的会话(ala PHP)并且需要扩展到多台计算机,会发生什么?没什么好的,至少。因此,您需要一个中心点来跟踪会话。

这可以是您的数据库(MongoDB)或Redis之类的东西,也可以是其他集中式机制,允许您检查会话。无论哪种方式,您都必须花时间执行请求并检索客户端的会话值。如果您没有其他值,则需要存储它是没有意义的,创建一个专用的会话体系结构(需要过期,等等),再次进行身份验证是最简单,最合理的解决方案。

我个人几乎从不需要会话,只是再次进行身份验证。

答案 1 :(得分:-2)

我找到了this解决方案,其中包含登录管理的最佳做法。这解决了我的理解问题。