reactjs - Passport JS 与 Firebase 身份验证系统

标签 reactjs express firebase-authentication passport.js

是否有任何正当理由在后端使用 Express JS 使用基于 Passport JS 的身份验证,而不是在前端使用 React 的 Firebase 身份验证系统?

刚刚探索了 Passport js,并想在 MERN Stack 项目中使用之前了解一下

最佳答案

PassportJS 只是一个身份验证中间件,可以与不同的 authentication strategies 一起使用。如果我理解正确的话,您可能会将 Passport 的本地策略与 Firebase 身份验证的用户名/密码一进行比较,在本例中:

我的回答是经典的“IT DEPENDS”,首先我会回答第一部分:

为什么使用 Firebase-auth(或任何其他第三方身份验证服务)

Authentication is hard, and you may not want to deal with it on your own (most of the time).

如果您计划使用带有用户名/电子邮件和密码的“本地”身份验证策略,您可能需要考虑并维护一组最佳实践,以避免 broken-authentication系统,您需要加密您的密码并确保它们在静态和传输过程中都是安全的,您还需要确保您的系统使用库或逻辑来避免 timing attacks 。此外,您可能需要考虑对密码长度强制执行一些规则,并且它们不能太弱(例如:​​它们属于最知名的密码列表)...

除此之外,您可能还想实现密码恢复机制、电子邮件更改,也许还有“电子邮件确认”逻辑,这有时可能很棘手。 我是否忘记提及 reCaptcha 和 2FA?如今,机器人变得越来越聪明。

我确实错过了在不使用 Firebase-auth 等托管服务时应考虑的其他一些最佳实践或风险。

这些服务是由只关心您“身份验证”的人构建的。

Firebase-auth 不是唯一的服务,您可能需要查看其他选项,例如 auth0 .

当然,就成本和灵活性而言,此选项并不是最便宜的。 Firebase auth 具有慷慨的免费套餐,但当您的应用程序增长时将付费,请参阅:https://firebase.google.com/pricing .

因此,如果您选择此选项,请考虑组织您的应用程序代码,使其能够轻松地与 Firebase 分离,以防有一天您想从中迁移。

为什么使用 Passport-local

自行使用中间件意味着您在管理不同的身份验证策略时将具有更大的灵活性,并且您只需支付维护应用程序的身份验证逻辑的额外成本(这可能会很高,因为您需要记住最好的方法)实践和风险)

其他注意事项

这取决于您的用例和您的团队:

关于reactjs - Passport JS 与 Firebase 身份验证系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75041906/

相关文章:

javascript - componentDidCatch() 是否捕获来自绑定(bind)到组件的 Promise 或事件处理程序的错误

ruby-on-rails - 使用 pagey gem 对哈希进行分页

javascript - react 来自angerouslySetInnerHTML的返回标记

node.js - 使用EJS时如何解决 "Unresolved variable or type data"警告?

javascript - 创建新用户帐户并发送电子邮件以创建密码 - Firebase

javascript - VueJS - 变量已定义但从未使用过(将数据发送到 Firebase)

reactjs - react 分析器 : What do the timings mean?

node.js - 如何以文本形式发送变量?

node.js - 将 socket.io 消息路由到 Express 路由

firebase - 在 Cloud Firestore 规则中,request.auth.uid 似乎始终为空