基本的 Node.js 和 Express.js Auth 权限系统教程

阅读时长 6 分钟读完

在现代 Web 应用程序中,身份验证和授权是不可或缺的部分。在 Node.js 中,我们可以使用 Express.js 框架来创建可伸缩且易于维护的 Web 应用程序,同时实现基本的身份验证和授权功能。

在本文中,我们介绍 Node.js 和 Express.js 的基本 Auth 权限系统,包括使用 JSON Web Tokens(JWTs)进行验证,创建基本的登录界面,并实现路由和端点的保护。

什么是JSON Web Tokens

JSON Web Tokens(JWT)是一种 Web 令牌,通过加密数据来保护数据的安全传输,JWT 包含三个部分:标头(Header)、载荷(Payload)和签名(Signature),其中标头包含令牌类型和算法用于验证的签名,载荷是包含有关令牌的其他信息,如用户 ID,过期时间和其他元数据,签名则是包含加密的标头和有效载荷的哈希值的字符串。

初始化项目

首先,我们需要创建一个新的 Node.js 项目并安装必要的依赖项。我们可以使用以下命令进行初始化:

然后,我们需要安装依赖项:expressjsonwebtoken,以及其他一些工具,如nodemon用于开发。

这些依赖项将帮助我们创建基本的 Express.js 应用程序,并使用 JWT 进行身份验证和授权。

基本的登录界面

为了进行身份验证,我们需要一个基本的登录页面,其中用户可以输入用户名和密码并进行身份验证。我们可以使用 Express.js 来创建一个路由处理程序,并将其用于处理登录请求。

-- -------------------- ---- -------
----- ------- - ------------------
----- ------ - ----------------

--------------------- ----- ---- -- -
  -- --------
  -----------------
--

-------------- - ------

在此路由处理程序中,我们可以处理用户的登录请求,并向前端发送响应,以便让用户知道他们的请求已被接收。

实现JWT身份验证

在处理用户的身份验证请求后,我们需要使用 JWT 创建一个令牌,并将其发送回前端。为此,我们需要实现一个基本的 JWT 身份验证功能。

在此功能中,我们使用 jsonwebtoken 库来创建 JWT 令牌,其中包含了用户的用户名,并使用环境变量 TOKEN_SECRET 作为签名密钥。此示例 JWT 令牌在过期前 30 秒有效。

接下来,我们需要使用此功能将 JWT 令牌发送回前端。

-- -------------------- ---- -------
----- ------- - ------------------
----- ------ - ----------------

--------------------- ----- ---- -- -
  ----- - --------- -------- - - --------

  -- ----

  ----- ----------- - -----------------------------

  ---------- ----------- --
--

-------------- - ------

在此路由处理程序中,我们生成一个 JWT 令牌,并将其作为 JSON 对象发送回前端。前端可以在发送需要身份验证的请求时将此令牌作为 HTTP 头的 Authorization 字段进行传输。

路由和端点的保护

为了保护我们的端点和路由,我们需要添加一些中间件,以验证 JWT 令牌,并阻止未经身份验证的用户访问受保护的端点。

-- -------------------- ---- -------
----- ------- - ------------------
----- --- - -----------------------
----- ------ - -----------------

---------------

----- ------ - ----------------

--------------------- ----- ---- -- -
  ----- - --------- -------- - - --------

  -- ----

  ----- ----------- - -----------------------------

  ---------- ----------- --
--

------------------------ ------------------ ----- ---- -- -
  -- --------
  --------------- --------
--

----- ----------------- - ----- ---- ----- -- -
  ----- ---------- - ----------------------------
  ----- ----- - ---------- -- ------------------ -----

  -- ------ -- ----- ------ ------------------- -- ----

  ----------------- ------------------------- ----- ----- -- -
    -- ----- ------ ------------------- -- -----

    -------- - ----
    ------
  --
-

-------------- - ------

在此 Express.js 应用程序中,我们有一个路由处理程序 /protected,它使用 authenticateToken 中间件进行身份验证。在此中间件中,我们从请求标头中提取 JWT 令牌,并使用 jsonwebtoken 库验证其有效性。如果令牌无效,则中间件返回 403 响应。否则,中间件将用户对象添加到请求对象中,以便用于将其传递给受保护的路由处理程序。

我们可以在路由处理程序中使用此用户对象,以便在受保护的路由中进行进一步处理。

总结

在本文中,我们了解了如何使用 Express.js 和 JWT 创建基本的身份验证和授权系统。我们学习了如何使用 jsonwebtoken 库创建和验证 JWT 令牌,并将其用于保护受保护的端点和路由。最后,我们还创建了一个基本的登录界面来处理用户的身份验证请求。这些技术对于构建可伸缩且安全的现代 Web 应用程序是必不可少的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649ca6a948841e9894962790

纠错
反馈