是否有任何正当理由在后端使用 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
自行使用中间件意味着您在管理不同的身份验证策略时将具有更大的灵活性,并且您只需支付维护应用程序的身份验证逻辑的额外成本(这可能会很高,因为您需要记住最好的方法)实践和风险)
其他注意事项
这取决于您的用例和您的团队:
- 您可以研究一些可以立即处理身份验证的服务,例如 Keycloak
- 使用 Passport.js 作为核心库,但采用 Auth0 等策略 ( https://www.passportjs.org/packages/passport-auth0/ )
关于reactjs - Passport JS 与 Firebase 身份验证系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75041906/