在开发 Web 应用程序时,保证用户数据的安全非常重要。为了实现这一点,开发人员需要使用某种认证和授权机制。其中 JWT(JSON Web Token)就是一种非常流行的认证机制。Express.js 是一个流行的 Node.js 框架,它可以用于快速搭建 Web 服务器。在本文中,我们将学习如何使用 Express.js 和 JWT 实现权限控制和认证。
什么是 JWT?
JWT 是一种用于在网络应用中传递声明的一种基于 JSON 的开放标准(RFC 7519)。该声明可以被加密和签名,以提高安全性并防止伪造。JWT 通常用于身份验证和授权。
JWT 是由三部分组成的,分别是头部、载荷和签名:
头部
头部通常包含两个部分:令牌的类型和所使用的加密算法。例如:
{ "alg": "HS256", "typ": "JWT" }
载荷
载荷包含一些声明。声明是有关实体(通常是用户)和其他数据的声明。有三种类型的声明:注册声明、公共声明和私人声明。例如:
{ "sub": "1234567890", "name": "John Doe", "admin": true }
签名
签名是对头部和载荷进行签名的一种方式,以便验证发送方的身份和确保消息的完整性。签名通常使用密钥生成,以确保只有使用相应密钥的接收方才能验证签名。
如何在 Express.js 中使用 JWT
在 Express.js 中,我们可以使用 jsonwebtoken 库来实现 JWT。首先,我们需要使用 npm 安装它:
npm install jsonwebtoken --save
接下来,我们将创建一个 Express.js 应用程序,并使用 JWT 管理用户的身份验证和授权。
1. 引入依赖
在 app.js 文件中,我们首先需要引入需要的依赖项:
const express = require('express'); const jwt = require('jsonwebtoken'); const bodyParser = require('body-parser');
2. 创建路由
我们需要创建一些路由,以处理我们的用户身份验证和授权请求。例如:
-- -------------------- ---- ------- ----- --- - ---------- ------------------------------- --------- ----- ---- --------------------------- -- ---- ------------------ ----- ---- -- - -- ---- -- ------------- - -- ------ --- ----- ----- ----- - ---------- -------- -- --------- - ---------- ---- --- -- - ----- ------ ---------- ----- --- - ---- - -- ------ -------------------- - --- -- ------ --------------------- -------------------- ----- ---- -- - -- -------- ---------- -------- ------- -------- --- ---
3. 创建身份验证函数
我们需要创建一个函数来验证用户是否已经被身份验证。例如:
-- -------------------- ---- ------- -------- ------------------------ ---- ----- - -- ------ --- --------- --- -- ---------------------------- - ------ -------------------- - -- ----------- ----- ----- -------- ------ - --------------------------------- --- -- -- ----- ----------------- --------- ----- -------- -- - -- ----- - ------ -------------------- - -- ----- ------- -- ----------- - -------- ------- --- -
4. 启动应用程序
现在我们已经完成了所有实现,可以启动应用程序了:
app.listen(3000, () => { console.log('Server started on http://localhost:3000'); });
总结
在本文中,我们学习了如何使用 Express.js 和 JWT 实现身份验证和授权。我们使用 jsonwebtoken 库创建和管理 JWT,并创建一些路由来处理我们的身份验证和授权请求。我们还创建了一个身份验证函数,以确保只有身份验证的用户才能访问受保护的路由。本文所使用的代码都能够运行,它可以在实际项目中提供参考和指导。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6489705548841e98947b95be