Nest Keycloak Connect 项目教程
1. 项目目录结构及介绍
nest-keycloak-connect/
├── src/
│ ├── controllers/
│ ├── services/
│ ├── guards/
│ ├── decorators/
│ ├── interceptors/
│ ├── pipes/
│ ├── filters/
│ ├── main.ts
│ └── app.module.ts
├── .gitignore
├── .prettierrc
├── .nvmrc
├── .eslintrc.mjs
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
├── README.md
├── LICENSE
└── CONTRIBUTING.md
目录结构说明
- src/: 项目的主要源代码目录。
- controllers/: 存放控制器文件,处理HTTP请求和响应。
- services/: 存放服务文件,处理业务逻辑。
- guards/: 存放守卫文件,用于权限控制。
- decorators/: 存放自定义装饰器文件。
- interceptors/: 存放拦截器文件,用于请求和响应的预处理和后处理。
- pipes/: 存放管道文件,用于数据转换和验证。
- filters/: 存放异常过滤器文件,用于全局异常处理。
- main.ts: 项目的启动文件。
- app.module.ts: 项目的根模块文件。
- .gitignore: Git忽略文件配置。
- .prettierrc: Prettier代码格式化配置文件。
- .nvmrc: Node版本管理配置文件。
- .eslintrc.mjs: ESLint代码检查配置文件。
- package.json: 项目依赖和脚本配置文件。
- pnpm-lock.yaml: pnpm包管理器锁文件。
- tsconfig.json: TypeScript配置文件。
- README.md: 项目说明文档。
- LICENSE: 项目许可证文件。
- CONTRIBUTING.md: 项目贡献指南文件。
2. 项目启动文件介绍
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
启动文件说明
- NestFactory.create(AppModule): 创建Nest应用实例,传入根模块
AppModule
。 - app.listen(3000): 启动应用,监听3000端口。
3. 项目配置文件介绍
app.module.ts
import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';
import { KeycloakConnectModule, ResourceGuard, RoleGuard, AuthGuard } from 'nest-keycloak-connect';
@Module({
imports: [
KeycloakConnectModule.register({
authServerUrl: 'http://localhost:8080/auth',
realm: 'master',
clientId: 'my-nestjs-app',
secret: 'secret',
}),
],
providers: [
{
provide: APP_GUARD,
useClass: AuthGuard,
},
{
provide: APP_GUARD,
useClass: ResourceGuard,
},
{
provide: APP_GUARD,
useClass: RoleGuard,
},
],
})
export class AppModule {}
配置文件说明
- KeycloakConnectModule.register(): 注册Keycloak连接模块,配置Keycloak服务器的URL、领域、客户端ID和密钥。
- providers: 提供全局守卫,包括
AuthGuard
、ResourceGuard
和RoleGuard
,用于权限控制。
通过以上配置,项目可以与Keycloak进行集成,实现用户认证和授权功能。