从你如何表达这个问题来看,我相信使用 Express 模块(Passport 或类似模块)的开销是你最不担心的;-)
首先,您需要弄清楚要使用哪些机制。
对于身份验证,您将使用用户名/密码组合,还是使用第三方服务,如 Google、Facebook、Twitter 等(“OAuth”之类)?除非您使用某些第三方服务,否则您还需要处理注册(可能还需要验证电子邮件地址等)。即使对于用户名/密码组合,您会自己推出还是使用基于浏览器的“基本身份验证”机制?
身份验证后,您需要一个会话机制来存储一些会话令牌以识别(并验证服务器端)您已通过身份验证。它们通常存储在浏览器 cookie 中,只要您需要,它们就可以轻松地持久化,并通过服务器端数据库中的令牌与每个相关请求进行验证。
最后,您需要一个注销机制和一个“我忘记密码”程序(最初很可能是手动的......)。
如果这一切对您来说相当新,我建议您先尝试使用现成的东西(您自己提到 Passport),然后当您掌握了基础知识后,请随时用您自己的东西替换它。使用 Passport 或 Everyauth 的“好处”是它们涵盖了更多选项,您实际上将能够自己编写,因此一旦您调整系统以使用其中之一,添加 Facebook 登录和类似内容将很多更容易(有人已经为你想出了大部分的东西)。
老实说,在 Node 生态系统中处理此类事情的大多数模块都是在您决定使用的任何解决方案之上的相当薄的包装器,因此开销很可能不会很大,您很可能需要很好地理解无论如何使用它们的问题。在光谱的另一端是现成的系统,如 Drupal 等,一切都可以正常工作,但是就制作自己的系统而言,您有些局限。
在某些用例中,绝对有必要从头开始编写自己的代码,但是没有什么可以阻止您稍后在必要时/如果需要(并且在您在其他人编写的代码的帮助下掌握了基础知识之后)这样做。
祝你好运!