如何在 NestJS 中实现 JWT 认证

身份验证是任何应用程序最重要的方面之一。它通过在授予用户访问应用程序不同部分的访问权限之前验证用户来提高应用程序的安全性。身份验证还使公司能够跟踪有多少人在使用他们的产品。

正确配置身份验证至关重要。事实上,开放 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 '
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值