身份验证是任何应用程序最重要的方面之一。它通过在授予用户访问应用程序不同部分的访问权限之前验证用户来提高应用程序的安全性。身份验证还使公司能够跟踪有多少人在使用他们的产品。
正确配置身份验证至关重要。事实上,开放 Web 应用程序安全项目 (OWASP) 在其十大 Web 应用程序安全风险列表中确定了识别和身份验证失败。
本教程将演示在 NestJS 中实现 JWT 用户身份验证的分步过程。
跳跃前进:
-
先决条件
-
什么是 NestJS?
-
入门
-
设置 MongoDB 数据库
-
创建用户模块
-
创建用户架构
-
创建用户服务
-
创建用户控制器
-
创建身份验证模块
-
配置 JWT
-
创建身份验证服务和控制器
-
测试应用程序
先决条件
本教程是一个动手演示。要继续进行,请确保您已安装以下内容:
-
Node.js v14 及以上
-
MongoDB
-
纱线全球安装;使用命令npm install --global yarn
什么是 NestJS?
NestJS 是 Node.js 的服务器端应用程序框架,可让您创建可扩展且高效的应用程序。它是用 TypeScript 编写的,并使用 Express.js 构建,这是一个轻量级的框架,它本身就很棒,但缺乏结构。
Nest 支持面向对象编程、函数式编程和函数式反应式编程。如果你想在你的应用程序的后端有很多结构,这个框架是一个很好的选择。
Nest 的语法和结构与前端框架 Angular 相似。它还使用 TypeScript、服务和依赖注入,就像 Angular 一样。Nest 使用模块和控制器,并允许您使用命令行界面为文件创建控制器。
入门
要设置项目,您首先需要使用以下命令全局安装 Nest CLI:
npm i -g @nestjs/cli
安装完成后,创建一个新项目,如下所示:
nest new auth-with-nest
接下来,系统将提示您选择包管理器来安装依赖项。对于这个演示,我们将使用 Yarn。
选择yarn并按Enter键。现在,等待 Yarn 安装运行应用程序所需的所有依赖项。
设置 MongoDB 数据库
要设置和连接数据库,请使用以下命令安装 Mongoose 包、bcrypt 和 NestJS 包装器:
npm install --save @nestjs/mongoose @types/bcrypt mongoose bcrypt
现在,更新app.module.ts文件并设置 Mongoose,如下所示:
import { MongooseModule } from '@nestjs/mongoose'; @Module({ imports: [MongooseModule.forRoot('mongodb://localhost/authentication')], })
在上面的代码片段中,我们将 导入MongooseModule到 rootAppModule中。
创建用户模块
为了让您的代码保持整洁和井井有条,请通过运行以下命令专门为 NestJS CLI 用户创建一个模块:
nest g module users
上面的代码创建了一个包含users.module.ts文件和app.module.ts更新文件的用户文件夹。
创建用户架构
要创建用户架构,users.model.ts请在文件夹中创建一个文件src/users并添加以下代码:
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from '