如何为nodejs网站进行正确而简单的验证?

时间:2017-03-13 01:39:58

标签: node.js mongodb authentication express socket.io

我正在学习使用nodejsn,express,socket.io和mongodb创建一个网站。我几乎是自学成才,但是当涉及到身份验证时,我找不到一个解释它如何工作的教程。

我有一个登录表单,一个注册表单,用户数据在注册时存储到数据库中。当我登录时,页面用我的用户名迎接我,但当我刷新或关闭标签并返回时,我必须再次登录。
我想要的是让用户无需系统登录就可以回来。

我能找到的解释如下:http://mherman.org/blog/2015/01/31/local-authentication-with-passport-and-express-4
我真的不明白。

有人可以解释我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:1)

会话管理是Jekrb强调的内容,在突出用户是匿名用户还是应用程序用户时也是一个很好的问题。

虽然在我进入任何深度之前,我将强调,如果您的应用程序将在更大规模上工作,那么您会遇到一个小问题:“如果您有N个服务器,其中N> 1?“所以,如果您不确定您的用户群,那么在某种程度上,cookie可能不是正确的方法。

我将假设您没有此问题,因此提供Cookie作为识别用户的方法是合适的,但这不是唯一可用的方法。

本文概述了行业解决这个问题的几种方法:

https://www.kompyte.com/5-ways-to-identify-your-users-without-using-cookies/

我最喜欢的方法是使用https://github.com/Valve/fingerprintjs2进行画布指纹识别,这将创建一个可以存储并用于验证新连接的哈希值,可能与您列出的使用的socket.io类似。这方面的一个主要优点是可扩展性,因为我们可以将这些独特的哈希值集中存储在数据库中,而不必担心总是被一台服务器困住。

最后,我没有提出任何我不喜欢的代码,但主题很难确定具体细节,尽管我希望只提供一些替代cookie。