2019 年流行的 6 个 JavaScript 用户认证库
原文链接:https://blog.bitsrc.io/6-javascript-user-authentication-libraries-for-2019-6c7c45fbe458
“在两周内为我建立一个用户-认证应用!” - 有用的方法把工作做完,快速而简单。
“两周之内为我建立一个用户认证系统”是当今研发团队的一个常用短语。出于各种原因,这个任务一直是团队中的一个开发人员需要解决的问题之一。
一方面,你真的不想浪费很多时间做这件事。另一方面,您担心这类信息由您自己内部编写的服务来处理可能会更好,以便以后更好地扩展。
随着新的教程出现在网络上(这是一个好的开始),越来越多的团队试图理解实现他们自己的解决方案,或者使用库或服务的成本-收益平衡。我已经收集了一份关于现有内容的简短评论。希望这有助于节省一些时间,并做出更明智的决定。请随意评论并分享你自己的见解。
1. Passport JS
Passport 不仅是一个有 15k 星的 user-auth 库,它可能是 JS 开发人员使用外部库进行用户认证的最常见方式。这个库基本上为 node.js 提供了相对灵活和模块化的中间件,可以集成到任何基于 Express 的 web 应用程序中。它也是一个社区平台,支持各种常见认证,如用户名和密码、Facebook、Twitter 等。如果你不想实现你自己的解决方案,这可能是你的第一个选择。不过,请注意这些常见的错误要避免。
- 配合 Express: https://github.com/expressjs/session
2. Auth0
虽然这不是一个库,而是一项服务,但这是完成这项工作的一种稳健而快速的方式。auth0 是一家(相当大的)初创公司,为 web、移动和传统应用程序提供了广泛的通用认证和授权平台。有人说这最接近基于 Ruby On Rails 的Platafomatec 的解决方案,除了你可以用任何语言连接任何应用程序或 API。有超过 100 个预先构建的集成,这是一个基于 node.js 的 quick-strart。
3. Permit
Permit 是一个有 1K 个星的项目,旨在为构建 Node.js API 提供一个“非个性化”的认证库。Permit 允许您向任何 Node.js API 添加认证层,并且可以与 Express、Koa、Hapi 和 Fastify 等框架一起使用。它可以与从 REST 到 GraphQL 的多种类型的 API 一起使用,因此是“非个性化”的设计。Permit 旨在关注 API (无状态请求)和 Express 以外的支持框架。它也正在被积极开发,这使得 Permit 成为一个可以考虑的有趣选择。绝对值得关注这个。
看例子。这里有一个配合 Express 的:
import { Bearer } from 'permit';
import express from 'express';
const permit = new Bearer({
basic: 'username', // Also allow a Basic Auth username as a token.
query: 'access_token', // Also allow an `?access_token=` query parameter.
});
function authenticate(req, res, next) {
// Try to find the bearer token in the request.
const token = permit.check(req);
// No token found, so ask for authentication.
if (!token) {
permit.fail(res);
return next(new Error(`Authentication required!`));
}
// Perform your authentication logic however you'd like...
db.users.findByToken(token, (err, user) => {
if (err) return next(err);
// No user found, so their token was invalid.
if (!user) {
permit.fail(res);
return next(new Error(`Authentication invalid!`));
}
// Authentication succeeded, save the context and proceed...
req.user = user;
next();
});
}
const app = express();
app.get('/', (req, res) => {
res.send('Some unrestricted content.');
});
app.get('/restricted', authenticate, (req, res) => {
res.send('Restricted content!');
});
app.listen(3000);
4. Grant
一个相当新的、有前景的库,为 Express、Koa 和 Hapi 提供 OAuth 中间件——有超过180 家受支持的提供商和一个live palyground。如果你想和你自己的私人 OAuth 提供商一起使用,你可以自己指定所需的密钥。尽管这个图书馆已经开始受到关注( + 1K 颗星),但资源相对稀缺,所以请小心尝试。
5. Feathers authentication management
Feathers是 NodeJS 的开源实时微服务 Web 框架(11K 星),通过 RESTful 资源、套接字和灵活插件,您可以控制数据。
Feathers 还提供了身份验证和身份验证管理模块,允许您在本地 Feathers 身份验证中添加注册验证、忘记密码重置和其他功能。这个想法是在一个灵活的基础设施中,将不同的认证方法结合在一个屋檐下。这里有一个step-by-step 的指南来帮助你开始。
6. 只是有 Firebase Authentication(用于小型应用)
这不一定是个在你的可扩展平台上管理用户授权的长期解决方案。但是,对于使用 Firebase 部署的应用程序来说,这是一种非常有用的方式,可以快速简单地完成工作。
Firebase Authentication 提供后端服务、易于使用的 SDK 和现成的 UI 库,以向您的应用程序验证用户。它支持使用密码、电话号码、流行的联合身份提供商(如谷歌、Facebook 和 Twitter )进行身份验证。在这里了解更多信息。
这里有一个非常好的教程,用于构建一个反应应用程序,该应用程序利用 Firebase 对 Facebook、Twitter 和 GitHub 进行用户认证:
这里有一个类似的教程,用于构建具有 Firebase 认证的 Vue.js 应用程序:
关于 MERN 堆栈( 3 部系列) :