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 等。如果你不想实现你自己的解决方案,这可能是你的第一个选择。不过,请注意这些常见的错误要避免。
jaredhanson/passport
Simple, unobtrusive authentication for Node.js. Contribute to jaredhanson/passport development by creating an account…
github.com
- 配合 Express: https://github.com/expressjs/session
2. Auth0
虽然这不是一个库,而是一项服务,但这是完成这项工作的一种稳健而快速的方式。auth0 是一家(相当大的)初创公司,为 web、移动和传统应用程序提供了广泛的通用认证和授权平台。有人说这最接近基于 Ruby On Rails 的Platafomatec 的解决方案,除了你可以用任何语言连接任何应用程序或 API。有超过 100 个预先构建的集成,这是一个基于 node.js 的 quick-strart。
Never Compromise on Identity. — Auth0
Auth0 is the solution you need for web, mobile, IoT, and internal applications. Loved by developers and trusted by…
auth0.com
3. Permit
Permit 是一个有 1K 个星的项目,旨在为构建 Node.js API 提供一个“非个性化”的认证库。Permit 允许您向任何 Node.js API 添加认证层,并且可以与 Express、Koa、Hapi 和 Fastify 等框架一起使用。它可以与从 REST 到 GraphQL 的多种类型的 API 一起使用,因此是“非个性化”的设计。Permit 旨在关注 API (无状态请求)和 Express 以外的支持框架。它也正在被积极开发,这使得 Permit 成为一个可以考虑的有趣选择。绝对值得关注这个。
ianstormtaylor/permit
An unopinionated authentication library for building Node.js APIs. — ianstormtaylor/permit
github.com
看例子。这里有一个配合 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 颗星),但资源相对稀缺,所以请小心尝试。
simov/grant
OAuth Middleware for Express, Koa and Hapi. Contribute to simov/grant development by creating an account on GitHub.
github.com
5. Feathers authentication management
Feathers是 NodeJS 的开源实时微服务 Web 框架(11K 星),通过 RESTful 资源、套接字和灵活插件,您可以控制数据。
Feathers 还提供了身份验证和身份验证管理模块,允许您在本地 Feathers 身份验证中添加注册验证、忘记密码重置和其他功能。这个想法是在一个灵活的基础设施中,将不同的认证方法结合在一个屋檐下。这里有一个step-by-step 的指南来帮助你开始。
feathersjs/authentication
Feathers local, token, and OAuth authentication over REST and Websockets using JSON Web Tokens (JWT) with PassportJS. …
github.com
feathers-plus/feathers-authentication-management
Adds sign up verification, forgotten password reset, and other capabilities to local feathers-authentication …
github.com
6. 只是有 Firebase Authentication(用于小型应用)
这不一定是个在你的可扩展平台上管理用户授权的长期解决方案。但是,对于使用 Firebase 部署的应用程序来说,这是一种非常有用的方式,可以快速简单地完成工作。
Firebase Authentication 提供后端服务、易于使用的 SDK 和现成的 UI 库,以向您的应用程序验证用户。它支持使用密码、电话号码、流行的联合身份提供商(如谷歌、Facebook 和 Twitter )进行身份验证。在这里了解更多信息。
这里有一个非常好的教程,用于构建一个反应应用程序,该应用程序利用 Firebase 对 Facebook、Twitter 和 GitHub 进行用户认证:
React OAuth Authentication with Firebase
We build an awesome React app with Firebase to consume OAuth Authentication with GitHub, Twitter and Facebook
blog.bitsrc.io
这里有一个类似的教程,用于构建具有 Firebase 认证的 Vue.js 应用程序:
Build a Vue App with Firebase Authentication and Database
A short yet detailed guide to building a simple Vue app with Firebase for Authentication and Firestore for Database.
blog.bitsrc.io
关于 MERN 堆栈( 3 部系列) :
Build a Login/Auth App with MERN Stack- Part 1
Create a (minimal) full-stack app with user authentication via passport and JWTs.
blog.bitsrc.io