“两周内给我建一个用户认证系统”是现在研发团队中常见的一句话。由于种种原因,这个任务一直是留给团队中的一个开发人员去解决的。
一方面,你确实不想浪费很多时间。另一方面,你担心这种信息可能最好由自己内部编写的服务来处理,以便以后更好的扩展。
随着网络上出现新的教程(是一个很好的开始),越来越多的团队试图了解实现自己的解决方案与使用库或服务的成本效益等式,希望这可以节省一些时间,并做出更明智的决定。
1. Passport JS
https://github.com/jaredhanson/passport
Passport不仅仅是一个15k星用户身份验证库,它可能是JS开发人员使用外部库进行用户认证的最常见方式。该库基本上为Node.js提供了相对灵活和模块化的中间件,可以将其集成到任何基于Express的Web应用程序中。它也是一个社区平台,支持各种常见的身份验证,例如用户名和密码,Facebook,Twitter等。如果你不想实施自己的解决方案,则可能是第一个选择。
2. Auth0
https://auth0.com/
虽然这不是库,而是服务,但这是完成工作的可靠而快速的方法。Auth0是一家(颇具规模的)新兴公司,为Web,移动和旧版应用程序提供广泛的通用身份验证和授权平台。有人说这是与Plataformatec的Ruby on Rails Devise最接近的解决方案,除了你可以使用任何语言连接任何应用程序或API。已有超过100个预先建立的集成。
3. Permit
https://github.com/ianstormtaylor/permit
Permit是一个1千颗星的项目,旨在为构建Node.js API提供一个“不受限制的”身份验证库。Permit允许你向任何Node.js API添加身份验证层,并且可以与Express,Koa,Hapi和Fastify等框架一起使用。它可以与从REST到GraphQL的多种类型的API一起使用,因此是“非规范化”的设计。Permit旨在专注于API(无状态请求)和Express以外的支持框架。它也在积极开发中,这使“Permit”成为一个值得考虑的有趣选择。
4. Grant
https://github.com/simov/grant
一个相当新的,很有前途的库,为Express,Koa和Hapi提供OAuth中间件,并提供180多家受支持的提供商和一个实时游乐场。如果你想将其与自己的私有OAuth提供程序一起使用,则可以自己指定所需的密钥。尽管该库已经开始受到关注(超过1K星),但是资源相对稀缺,因此请谨慎尝试。
5. Feathers 认证管理
https://github.com/feathers-plus/feathers-authentication-management
Feathers是一个开源(11K星)的NodeJS实时微服务Web框架,通过RESTful资源、套接字和灵活的插件让你控制数据。
Feathers还提供了认证和认证管理模块,让你在本地Feathers认证中增加注册验证、遗忘密码重置等功能。这个想法是在一个灵活的基础设施中,将不同的认证方法结合在一起。
6. 只需使用Firebase身份验证(适用于小型应用程序)
https://blog.bitsrc.io/react-oauth-authentication-with-firebase-dfe0e8c5d0d4
这可能不一定是在你的扩展平台中管理用户授权的长期解决方案(或者是吗?),但是,对于通过Firebase部署的应用程序来说,这是一种非常有用的方法,可以快速,轻松地完成工作。
Firebase身份验证提供后端服务,易于使用的SDK和现成的UI库,以对你的应用程序的用户进行身份验证。它支持使用密码、电话号码、流行的联邦身份提供商(如谷歌、Facebook和Twitter)进行身份验证。