在开发 Web 应用程序时,保护您的 API 不受未经授权的访问是至关重要的。Express.js 是一个受欢迎的 Node.js 框架,它可以帮助您构建 RESTful API。在本文中,我们将学习如何使用 Express.js 和 JWT 来保护 RESTful API。
什么是 JWT?
JWT(JSON Web Tokens)是一种用于安全地传输信息的开放标准。它包含一系列声明,可以使用任何编程语言轻松解释。 JWT 是使用 HMAC 算法或RSA/ECDSA签名的 JSON Web Token,特点在于它自包含,即信息自身携带了足够的数据,避免了多服务器间的共享信息问题,而每个接口请求都带有 Token,从而通知服务器该请求来源具备访问权限。
创建 Express.js 应用程序
在开始使用 Express.js 和 JWT 之前,我们需要创建一个基本的 Express.js 应用程序。可以使用下面的命令安装 Express.js:
npm install express --save
启动 Node.js REPL 并导入 Express.js:
const express = require('express'); const app = express();
我们可以使用下面的代码为我们的应用程序创建一个路由:
app.get('/', (req, res) => { res.send('Hello World!'); });
现在在浏览器中访问 http://localhost:3000/
,您将看到“Hello World!”消息。
使用 JWT 保护 API
现在我们已经了解了如何创建一个基本的 Express.js 应用程序,让我们开始学习如何使用 JWT 来保护 RESTful API。首先,我们需要为我们的应用程序安装两个依赖项,jsonwebtoken 和 express-jwt:
npm install jsonwebtoken express-jwt --save
import or require jwt
const jwt = require('jsonwebtoken');
import or require express-jwt
const expressJwt = require('express-jwt');
现在,我们可以创建一个 JWT 并将其分配给用户。我们可以使用下面的代码为我们的应用程序创建一个路由,该路由将返回分配给用户的 JWT:
-- -------------------- ---- ------- ------------------ ----- ---- -- - -- ---- ---- ------- ----- ---- - - --- -- --------- ----------- ------ ---------------------- -- -- -------- --- --- ----- ----- ----- - ---------- ---- -- -------------- -- ------ --- -- ----- ---------- ----- --- ---
在上面的代码中,我们使用 jsonwebtoken 库生成一个 JWT 并将其返回给用户。请注意,我们在生成令牌时使用了一个密钥(本例中为“secret_key”)。该密钥应保持机密,并仅在服务器端使用。
现在,我们已经成功创建了 JWT 并将其返回给用户,让我们创建一个需要 JWT 认证的路由。为此,我们需要使用 express-jwt 中间件。
app.get('/protected', expressJwt({ secret: 'secret_key'}), (req, res) => { res.send('This is a protected route.'); });
现在,我们已经成功创建了需要 JWT 认证的路由。每当用户尝试访问该路由时,express-jwt 中间件将验证 JWT 的有效性,并在该令牌未过期且包含有效签名的情况下通过该路由。请注意,我们使用相同的密钥(“secret_key”)来验证令牌。
完整示例代码
-- -------------------- ---- ------- -- ------ -- ------- --------- --------- ----- ------- - ------------------- ----- --- - ------------------------ ----- ---------- - ----------------------- -- ------ ---------- --- ----- --- - ---------- -- ------ - ------ ----------- ----- ------------ ----- ---- -- - --------------- --------- --- -- ------ - --------- ----- ---- -------- --- --------------------- ------------ ------- --------------- ----- ---- -- - -------------- -- - --------- --------- --- -- ------ - ---- ----- --- ---- -------------- ------------------ ----- ---- -- - -- ---- ---- ------- ----- ---- - - --- -- --------- ----------- ------ ---------------------- -- -- -------- --- --- ----- ----- ----- - ---------- ---- -- -------------- -- ------ --- -- ----- ---------- ----- --- --- -- ------ --- -------- -------- ---------------- -- -- - ------------------- ------- -- ---- -------- ---
结论
在本文中,我们学习了如何使用 Express.js 和 JWT 来保护 RESTful API。我们可以创建一个 JWT 并将其分配给用户,并使用 express-jwt 中间件来保护需要 JWT 认证的路由。此外,我们还了解了一些 JWT 的基本原理。现在,您可以安全地保护您的 API 不受未经授权的访问。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f4dbd0c5c563ced5660a76