NestJS 认证示例教程
项目介绍
nest-auth-example
是一个基于 NestJS 框架的认证示例项目,使用了 Passport 进行认证处理。该项目展示了如何使用本地和 JWT 策略进行用户认证,并使用 TypeORM 连接 PostgreSQL 数据库。此外,项目还包括单元测试、集成测试和端到端测试,以及使用 MegaLinter 检查代码质量和通过 GitHub Actions 进行持续集成。
项目快速启动
克隆项目
git clone https://github.com/leosuncin/nest-auth-example.git
cd nest-auth-example
安装依赖
npm install
配置环境变量
从示例文件创建环境变量文件,并根据需要进行自定义:
cp .env.example .env
启动项目
npm run start
应用案例和最佳实践
用户认证
项目中实现了基于 Passport 的本地和 JWT 认证策略。以下是一个简单的用户注册和登录示例:
注册
@Post('signup')
@ApiOperation({ summary: 'User Signup' })
@ApiResponse({ status: 200, description: 'The record found', type: [BaseUser] })
signUp(@Body() signUpDto: Record<string, any>) {
const payload = {
username: signUpDto.username,
email: signUpDto.email,
password: signUpDto.password,
createdAt: new Date(),
};
return this.authService.signUp(payload);
}
登录
@Post('signin')
@Public()
@HttpCode(HttpStatus.OK)
@ApiOperation({ summary: 'User Signin' })
@ApiResponse({ status: 200, description: 'The record found', type: [BaseUser] })
signIn(@Body() signInDto: Record<string, any>) {
return this.authService.signIn(signInDto.email, signInDto.password);
}
最佳实践
- 认证模块化:将认证相关的组件(控制器、服务、守卫)封装在
AuthModule
中,便于管理和维护。 - 代码质量:使用 MegaLinter 检查代码质量,确保代码符合最佳实践。
- 持续集成:通过 GitHub Actions 实现持续集成,确保每次提交的代码都能通过自动化测试。
典型生态项目
TypeORM
TypeORM 是一个 ORM 框架,支持多种数据库,如 PostgreSQL、MySQL 等。在 nest-auth-example
项目中,TypeORM 用于连接和操作 PostgreSQL 数据库。
Passport
Passport 是一个流行的 Node.js 认证中间件,支持多种认证策略。在项目中,Passport 用于实现本地和 JWT 认证策略。
Jest
Jest 是一个 JavaScript 测试框架,用于编写和运行单元测试、集成测试和端到端测试。项目中使用 Jest 进行测试,确保代码的正确性和稳定性。
通过以上内容,您可以快速了解和启动 nest-auth-example
项目,并掌握其在实际应用中的使用方法和最佳实践。