在现代 Web 开发中,用户注册和登录是必备功能之一。如果您正在构建一个基于 Node.js 和 Express 的应用程序,那么本文将指导您创建一个基本的用户注册和登录系统。
前置要求
在继续之前,您需要安装以下软件:
- Node.js(版本必须大于 8.0.0)
- NPM 或 Yarn
- IDE 或文本编辑器
导入依赖
首先,我们需要创建一个新的 Node.js 项目并导入 Express 和其他必需的模块。在终端中运行以下命令:
----- ------------------------ -- -- ------------------------ --- ---- -- --- - ------- ----------- -------- -------- ------------ -------- ------------ ----
这将创建一个新的 Node.js 项目并从 NPM 导入依赖项:
express
- Node.js Web 框架body-parser
- 解析 HTTP 请求体mongoose
- MongoDB 数据库的对象建模工具bcryptjs
- 帮助我们加密密码jsonwebtoken
- 用于创建和解析 JSON Web Tokens (JWT)passport
- 用于身份验证的 Node.js 库passport-jwt
- Passport 的 JWT 身份验证策略cors
- Cross-Origin Resource Sharing(跨域资源共享)中间件
配置数据库
在继续之前,我们需要配置 MongoDB 数据库。我们将使用 mongoose
来连接 MongoDB。
打开 index.js
文件,连接到你的 MongoDB 数据库:
----- -------- - -------------------- ---------------- - --------------- ------------------------------------- - ---------------- ---- -- -------- -- ---------------------- -- ------------- ---------- -- -------------------- --- ------- -- ------------ ------
将 YOUR_DATABASE_URI
替换为您的 MongoDB 数据库 URI。
创建模型
接下来,我们将定义用户数据模型。在新的 models
目录中创建 User.js
文件:
----- -------- - -------------------- ----- --- - --------------- --------- ----- ------ - ---------------- ----- ---------- - --- -------- ------ - ----- ------- --------- ----- ------- ----- ---------- -- ---------- --- -- --------- - ----- ------- --------- ----- ---------- -- ---------- ---- - --- ----- ---- - ---------------------- ------------ -------- ------------------ - ----- ------ - - ------ ------------------------------------------------ --------- --------------------------------------- -- ------ ------------------ -------- - ------------ - ----- ---------------- - -------------
这将定义一个名为 User
的模型,并使用 Joi
模块对输入进行验证。我们需要确保用户在注册过程中输入了有效的电子邮件地址和密码。
创建控制器
在我们的应用程序中,控制器是处理用户请求的地方。在新的 controllers
目录中创建 auth.js
文件。它将包含创建用户、登录、注销等功能:
----- ------ - -------------------- ----- - - ------------------ ----- - ----- -------- - - -------------------------- --- - ---- -- ----- -------- ------------- ---- - ----- - ----- - - ------------------- -- ------- ------ ----------------------------------------------- ----- ---- - ----- -------------- ------ -------------- --- -- ------ ------ ------------------------------- --- ------- - --- --------------------- --------- -------------- ----- ---- - ----- ------------------- ---------------- - ----- ----------------------------- ------ ------- - ----- --------------- ------------------------ ------- ----------- - --- - ---- -- ----- -------- ---------- ---- - ----- - ----- - - ------------------- -- ------- ------ ----------------------------------------------- --- ---- - ----- -------------- ------ -------------- --- -- ------- ------ ----------------------------------- ----- ------------- - ----- --------------------------------- --------------- -- ---------------- ------ ----------------------------------- ----- ----- - ------------------------- ---------------- - -------- ----------- ---- - -- ----------------------- --- - ---------------- - --------- ------------- - ------ -------------- - -------
此控制器将在请求中获取表单数据,创建或验证用户数据,并处理响应。
创建路由
现在我们已经定义了控制器,我们可以使用路由将请求映射到该控制器。在新的 routes
目录中创建 auth.js
文件:
----- ------- - ------------------- ----- ------ - ----------------- ----- -------------- - ------------------------------- ------------------------ ------------------------- --------------------- ---------------------- ---------------------- ----------------------- -------------- - -------
这将定义路由并将其连接到控制器。
使用路由
最后,我们需要将我们的路由加载到我们的 Express 应用程序中。在 index.js
文件中添加以下代码:
----- ------- - ------------------- ----- ---------- - ----------------------- ----- ---- - ---------------- ----- ---------- - ------------------------- ----- --- - ---------- --------------------------- ------------------------------- --------- ----- ---- ---------------- ---------------- ------------ ----- ---- - ---------------- -- ----- ---------------- -- -- ------------------- ------- -- ---- --------------
我们已经定义了应用程序并加载了路由。现在,我们可以运行应用程序并测试用户注册和登录功能。
测试
在终端中运行以下命令启动应用程序:
---- --------
这将启动我们的应用程序。
现在,我们可以使用 Postman 或类似的工具进行测试。我们可以使用以下命令创建新用户:
---- ----------------------------------- ------------- ---------------- - -------- ---------------------- ----------- ---------- -
如果用户创建成功,您应该会收到下面的响应:
- ------ --------------- -------- --------------------- -
接下来,我们可以使用以下命令登录用户:
---- -------------------------------- ------------- ---------------- - -------- ---------------------- ----------- ---------- -
如果用户登录成功,您应该会收到下面的响应:
---------------------
此返回的 JWT 令牌应存储在客户端,并在每个请求中发送到服务器以验证用户身份。此处未包括发送 JWT 令牌的代码,但您可以搜索“使用 JWT 的 Node.js 身份验证”来了解如何实现它。
结论
使用 Node.js 和 Express 创建用户注册和登录系统需要一些基础知识,但它可以让您在 Web 开发中的拥有更多的灵活性和控制性。如果您需要更多的功能,例如电子邮件验证,OAuth 登录等等,这篇文章也为您提供了一个良好的起点。
示例代码请见 https://github.com/Luna-0925/my-register-login-system。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6711ee5ead1e889fe2019cde