在前端开发中,我们常常需要向后端服务器发送请求和接收响应以实现在线服务的功能。而为了确保安全性,通常采用安全认证机制,以确保只有认证用户可访问网站的相关服务资源。
本文选用 npm 包 @leisurelink/magicbus-authentic
作为例子,介绍如何使用该包进行认证,以及它的具体使用方法。
简介
@leisurelink/magicbus-authentic
是一种基于令牌的身份验证机制,适用于 Node.js 运行时。它使用 JWT(JSON Web Tokens)令牌,使允许访问 Web API 的用户可将其认证信息安全地保存在客户端。
@leisurelink/magicbus-authentic
功能强大,可提供多种选项,支持所有常见的付费和免费身份验证方案。在我们的项目中,这个包已经能很好地满足我们的需求。
安装
使用 npm 安装 @leisurelink/magicbus-authentic
模块,命令如下:
npm install @leisurelink/magicbus-authentic --save-dev
在使用之前,需要应用程序签署 JWT 密钥。对于此操作,我们同样可以使用另一个 npm 模块 jsonwebtoken
。
npm install jsonwebtoken --save-dev
使用
可在以下情景下使用该模块:
- 由已验证的用户发起的 API 请求
- 针对已验证的用户的地图标记
1. 在程序中添加身份验证机制
启动 Node.js Web 服务器,引入所需依赖模块。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ----- --- - ------------------------ ----- ------------- - ------------------------------------------- -- --------- ---- ----- ---- - --- --------------- ------- -------------------------- ------------ ---------------- --------- ------------- --------- ------------- ----------------------- --------------------------- ------------------------ ---------------------------- ------------- ---------------- --- --------------
其中,secret
- 应用程序 JWT 密钥使用的字符串。
其他配置参数及其说明如下:
auth0Domain
- Auth0 租户的名称。clientID
- Auth0 应用程序的客户端 ID。audience
- 对 API 服务器资源授权的唯一跨域标识符(因此您应该只允许授予您。例如,如果您的 API 拥有“user”和“admin”角色,那么您应该将此值设置为“user”或“admin”)。authMethodPropertyName
- 请求头、请求参数或 Auth0 OpenID Connect (OIDC) 打开 ID 提供者的名称 (options 请求)。authMethodPropertyValue
- 鉴定方法值(例如,将该值设置为“oidc”将表示我们使用 OIDC 请求),并能够修改包标头 (包括 Auth 端点请求)。tokenSubject
- 令牌的默认主题。
为身份认证处理器添加路由器。
const router = require('./routes/api/myrouter'); const authRouter = auth.routerFactory(router); app.use('/', authRouter);
2. 创建用于验证的 JSON Web Token
使用 jsonwebtoken
模块可生成 JSON Web Token。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------ - ----------------- ----- --- - ------------------------ ----- ------ - -------------------------- ---------------------- ----- ---- ----- -- - ----- ----------- - - --- ---------- ------ ----------------------- ----- ----- ---- -- ----- ----- - --------- ------------ ------- - ---------- ----- - -- ----- ---- -- -- -- -- -------- ---------- ------ ------- --------- -- --------- ------ --- ---
3. 保护 API 路由
要保护受保护的路由,我们可以将 @leisurelink/magicbus-authentic
中的 auth
中间件添加到路由中。
const router = express.Router(); const authMiddleware = auth.middlewareFactory(); router.get('/private-resource', authMiddleware, (req, res, next) => { // 如果是已验证用户访问,则为此 API。 res.send('Protected data.'); });
结论
在这篇文章中,我们介绍了 @leisurelink/magicbus-authentic
包的使用方法,并展示了如何将其整合到我们的 Web 应用程序中。该包为任何需要安全身份验证的 Node.js 项目提供了一种简单但功能强大的解决方案。
示例代码
GitHub: https://github.com/user/magicbus-authentic-example
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bc7967216659e24451b