Javascript 如何在不使用express的情况下为node.js和socket.io中制作的web工具创建基本身份验证、登录系统

Javascript 如何在不使用express的情况下为node.js和socket.io中制作的web工具创建基本身份验证、登录系统,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,我开发了一个web工具,它使用node.js和socket.io。这是一个单页网站,使用node.js从社交媒体网站获取数据并显示在同一页上。我想为网站添加特定于网站的登录系统,但不想使用“”或“”,因为它会在不需要的情况下为网站添加大量过载 我是node.js的新手,想知道我是否需要用node.js创建一个登录系统来维护登录用户的会话 注意:我需要维护会话来记录用户数据,如登录时间、搜索查询和可能的热图 提前谢谢。如果需要,我可以详细解释问题的具体部分。从长远来看,使用Express或Pass

我开发了一个web工具,它使用node.js和socket.io。这是一个单页网站,使用node.js从社交媒体网站获取数据并显示在同一页上。我想为网站添加特定于网站的登录系统,但不想使用“”或“”,因为它会在不需要的情况下为网站添加大量过载

我是node.js的新手,想知道我是否需要用node.js创建一个登录系统来维护登录用户的会话

注意:我需要维护会话来记录用户数据,如登录时间、搜索查询和可能的热图


提前谢谢。如果需要,我可以详细解释问题的具体部分。

从长远来看,使用Express或Passport(或至少是connect的一些中间件)肯定会更容易(如果你的应用程序不断增长),但如果你想走“手动”路线,以下是一些出发点:

  • Cookie解析器:您不希望将每个请求的身份验证详细信息作为参数发送,因此您希望将会话详细信息放入Cookie中。您可以手动设置cookies,也可以使用节点模块进行设置

  • 会话存储:您可以将所有“登录时间、查询和热图数据”放在cookie中,但在每个请求中只在cookie中发送会话id,并将另一个数据服务器端保存在数据库中会更整洁。选项包括,redis等


  • 因为阅读源代码非常有教育意义,所以请阅读connect的和。代码不多,API文档包含实际的源代码,因此很容易学习。享受!:)

    从您对这个问题的措辞来看,我相信使用Express模块(Passport或类似模块)的开销是您最不担心的;-)

    首先,您需要弄清楚要使用哪些机制

    对于身份验证,您是使用用户名/密码组合,还是使用第三方服务,如Google、Facebook、Twitter等(“OAuth”之类)?除非您使用第三方服务,否则您还需要处理注册(以及可能的电子邮件地址验证等)。即使是用户名/密码组合,您会使用自己的还是基于浏览器的“基本身份验证”机制

    在进行身份验证之后,您需要一个会话机制来存储一些会话令牌,以识别(并验证服务器端)您已经过身份验证。它们通常存储在浏览器cookie中,可以轻松地保存到您需要的任何时间,并使用服务器端数据库中的令牌对每个相关请求进行验证

    最后,您需要一个注销机制和一个“我忘记了我的密码”过程(最初很可能是手动的…)

    如果所有这些对你来说都是全新的,我建议你先尝试使用一些现成的东西(你自己也提到了Passport),然后当你掌握了基本知识后,可以用你自己的来代替它。使用Passport或Everyauth的“好处”是,它们涵盖了更多的选项,您可以自己编写这些选项,因此,一旦您将您的系统调整为使用其中一个,添加Facebook登录和类似功能将变得容易得多(有人已经为您的应用程序解决了大部分问题)

    老实说,在节点生态系统中处理这些事情的大多数模块在您决定使用的任何解决方案之上都是相当薄的包装,因此开销很可能不会很大,而且您很可能需要很好地理解这些问题才能使用它们。另一端是现成的系统,如Drupal等,一切都正常工作,但在制作自己的系统时,你多少有些局促不安

    在某些用例中,从头开始滚动是绝对必要的,但没有什么可以阻止您在以后的必要时(以及在其他人编写的代码的帮助下掌握了基础知识之后)这样做


    祝你好运

    谢谢。非常有用的建议。我将有一个付费订户,所以我将使用用户/通行证组合。我可以从其他答案中看出,使用中间件将是未来增长的更好方法。非常感谢。