使用 MySQL 数据库的 Node.js Express 登录示例

2025-05-28

使用 MySQL 数据库的 Node.js Express 登录示例

在本教程中,我们将构建一个 Node.js 快速登录和注册示例,该示例支持使用 JWT(JSONWebToken)进行基于 Token 的身份验证。您将了解:

  • 使用 JWT 身份验证的用户注册和用户登录的适当流程
  • Node.js Express 架构与 CORS、身份验证和授权中间件以及 Sequelize
  • 如何配置 Express 路由以使用 JWT
  • 如何定义身份验证和授权的数据模型和关联
  • 使用 Sequelize 与 MySQL 数据库交互的方法

全文:https ://bezkoder.com/node-js-jwt-authentication-mysql/

基于令牌的身份验证

与需要将 Session 存储在 Cookie 上的基于 Session 的身份验证相比,基于 Token 的身份验证的一大优势是我们将 JSON Web Token(JWT)存储在客户端:浏览器的本地存储、IOS 的 Keychain 和 Android 的 SharedPreferences……因此我们不需要构建另一个支持本机应用程序的后端项目或为本机应用程序用户构建额外的身份验证模块。

替代文本

JWT 有三个重要部分:Header、Payload、Signature。它们组合成一个标准结构:header.payload.signature

客户端通常在授权标头中附加带有 Bearer 前缀的 JWT:

Authorization: Bearer [header].[payload].[signature]
Enter fullscreen mode Exit fullscreen mode

或者仅在x-access-token标头中:

x-access-token: [header].[payload].[signature]
Enter fullscreen mode Exit fullscreen mode

更多详细信息可以访问:
JWT-JSON Web Token 深入介绍

Node.js Express 登录和注册示例概述

我们将构建一个 Node.js Express 应用程序:

  • 用户可以注册新帐户,或使用用户名和密码登录。
  • 根据用户的角色(管理员、版主、用户),我们授权用户访问资源

这是我们使用 MySQL 数据库运行的 Node.js 应用程序演示,并使用 Postman 测试 Rest Apis。

这些是我们需要提供的 API:

  • POST/api/auth/signup注册新账户
  • POST/api/auth/signin登录账户
  • GET/api/test/all检索公开内容
  • 获取/api/test/user访问用户内容
  • 获取/api/test/mod访问版主内容
  • 获取/api/test/admin管理员内容

使用 JWT 身份验证的注册和登录流程

该图显示了用户注册、用户登录和授权过程的流程。

node-js-登录-mysql-示例流

如果客户端访问受保护的资源,则必须在 HTTP x-access-token Header中添加合法的 JWT 。

您可能需要像这样实现刷新令牌:

node-js-express-刷新令牌示例流程

更多详细信息请访问:https://bezkoder.com/jwt-refresh-token-node-js/

具有身份验证和授权的 Node.js Express 架构

您可以通过下图概览我们的 Node.js Express App:

替代文本

通过Express路由,与路由匹配的HTTP 请求在进入安全层之前将由CORS 中间件进行检查。

安全层包括:

  • JWT 身份验证中间件:验证注册、验证令牌
  • 授权中间件:通过数据库中的记录检查用户的角色

如果这些中间件抛出任何错误,则会发送一条消息作为 HTTP 响应。

控制器通过Sequelize与 MySQL 数据库交互并向客户端发送HTTP 响应(令牌、用户信息、基于角色的数据……)。

有关更多详细信息、实现和 Github,请访问:
https://bezkoder.com/node-js-jwt-authentication-mysql/

使用 Cookies:https://www.bezkoder.com/node-js-express-login-example/

与此配合良好的前端:

您可能需要像这样实现刷新令牌:

node-js-express-刷新令牌示例流程

更多详细信息请访问:https://bezkoder.com/jwt-refresh-token-node-js/

进一步阅读

全栈:

部署:

Node.js 和 MySQL 关联:

Dockerize:Docker Compose:Node.js Express 和 MySQL 示例

文章来源:https://dev.to/tienbku/node-js-express-login-example-with-mysql-database-2n51
PREV
保持代码简单
NEXT
Node.js 使用 MySQL 进行 CRUD 操作的示例