NestJS JWT 使用教程
项目介绍
NestJS JWT 是一个基于 NestJS 框架的 JSON Web Token (JWT) 认证库。它提供了一种简单且安全的方式来处理用户认证和授权。通过使用 JWT,开发者可以在客户端和服务器之间安全地传输信息。
项目快速启动
安装依赖
首先,确保你已经安装了 NestJS 框架。然后,通过 npm 安装 NestJS JWT 库:
npm install @nestjs/jwt
配置 JWT
在你的 NestJS 项目中,创建一个 JWT 模块并进行配置:
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { JwtService } from '@nestjs/jwt';
@Module({
imports: [
JwtModule.register({
secret: 'your_secret_key', // 替换为你的密钥
signOptions: { expiresIn: '60s' }, // 设置 token 过期时间
}),
],
providers: [JwtService],
exports: [JwtService],
})
export class JwtAuthModule {}
使用 JWT 进行认证
在你的控制器中,使用 JWT 进行用户认证:
import { Controller, Post, Body } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
@Controller('auth')
export class AuthController {
constructor(private readonly jwtService: JwtService) {}
@Post('login')
async login(@Body() user: { username: string, password: string }) {
// 验证用户名和密码
if (user.username === 'admin' && user.password === 'password') {
const payload = { username: user.username };
return {
access_token: this.jwtService.sign(payload),
};
} else {
return { message: 'Invalid credentials' };
}
}
}
应用案例和最佳实践
用户认证
使用 JWT 进行用户认证是 NestJS JWT 库的主要应用场景。通过在登录接口中生成 JWT token,并将其返回给客户端,客户端在后续请求中携带该 token 进行认证。
授权
除了认证,JWT 还可以用于授权。通过在 JWT payload 中包含用户角色信息,可以在服务端进行权限验证,确保用户只能访问其权限范围内的资源。
典型生态项目
Passport.js
Passport.js 是一个流行的 Node.js 认证中间件,可以与 NestJS JWT 结合使用,提供更丰富的认证策略,如 OAuth、OpenID 等。
TypeORM
TypeORM 是一个 TypeScript 编写的数据库 ORM 库,可以与 NestJS 结合使用,提供数据库操作功能。在用户认证和授权中,TypeORM 可以用于管理用户数据。
通过结合这些生态项目,可以构建一个完整的用户认证和授权系统。