@ackplus/nest-auth (英语)
NestJS.Sessions,MFA,OAuth,无密码,多租,RBAC,审计记录,以及嵌入式管理控制台的全功能认证模块——所有类型安全端到结束.
为什么
现代认证有一个长的清单:电子邮件+密码,OAuth,MFA,刷新-托肯旋转,RBAC,多租,审计日志,一个管理员控制台. 大多数团队将5个库(并拥有集成风险)粘合在一起,或购买主机供应商(并失去数据所有权). @ackplus/nest-auth 选择第三个路径 : 在自己的 NestJS 应用程序中安装的单一模块化库, 由自己的数据库支持。 。 。 .
安装
pnpm add @ackplus/nest-auth @ackplus/nest-auth-contracts
必要的同伴依赖性 :
pnpm add @nestjs/common @nestjs/core @nestjs/typeorm @nestjs/swagger \
@nestjs/event-emitter @nestjs/platform-express \
typeorm class-validator class-transformer reflect-metadata rxjs
可选, 只有在您启用匹配功能时 :
| 特性 | 添加 |
|---|---|
| Cookie- 模式会议 | cookie-parser |
| 重写会话 | ioredis |
| 谷歌 OAuth( 谷歌 OAuth) | google-auth-library |
| 脸书 OAuth | fb |
| 苹果奥特 | apple-auth |
| 限制费率 | @nestjs/throttler |
AI 编码代理
使用 Claude 代码, Codex, Cursor 或者另一个 AI 编码代理? 安装 Nest Auth 技能使其知道 SDK 的真实 API :
npx @ackplus/nest-auth-skill
它检测你的堆栈( 或通过) --stack backend),并且只添加代理指令文件;您的应用程序不会被更改.
包括什么
| 能力 | 页:1 |
|---|---|
| 9个登录方法 | 电子邮件 + 密码 + 密码 + 密码 无密码 OTP / 魔法链接 Google / Facebook 苹果 GitHub + API 键+自定义 OAuth 提供商 |
| 外交部 | TOTP 电子邮件 OTP 短信 OTP 寻回代码 被信任的设备代号 |
| 会议 | 数据库( 默认), Redis, 或 in- memory \ 自动重现 \ 刷新键旋转 \ 密码- hash- prefix 无效 |
| 多重租赁 | disabled 编号 : shared 编号 : isolated * 租户意识装饰者 |
| 非洲区域局 | 角色 + 每个守护命名空间的权限(网络、api、移动) 外部境内流离失所者友好化 |
| 嵌入式管理控制台 | 用于用户、角色、权限、租户、 API 密钥的内建 React UI |
| 钩子事件( E) | 每个生命周期的时刻都是压倒一切的 EventEmitter2 融合 |
| 审计记录 | 合规结构化事件钩 |
| 打开API | 自动生成 @nestjs/swagger 每个端点的 spec |
最小示例
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { NestAuthModule, NestAuthEntities } from '@ackplus/nest-auth';
@Module({
imports: [
EventEmitterModule.forRoot(),
TypeOrmModule.forRoot({
type: 'postgres',
url: process.env.DATABASE_URL,
entities: [...NestAuthEntities],
synchronize: process.env.NODE_ENV === 'development',
}),
TypeOrmModule.forFeature([...NestAuthEntities]),
NestAuthModule.forRoot({
appName: 'My App',
session: { jwt: { secret: process.env.JWT_SECRET! } },
// emailAuth: { enabled: true }, // default
// google: { clientId, clientSecret }, // opt-in OAuth
// mfa: { enabled: true, required: true },
// tenant: { enabled: true, mode: TenantModeEnum.SHARED },
}),
],
})
export class AppModule {}
就是这样,你立刻得到 POST /auth/signup, (中文(简体) ), POST /auth/login, (中文(简体) ), /auth/refresh-token,密码重置,MFA,OAuth调用,其余API. 线 EventEmitterModule.forRoot(), (中文(简体) ), cookie-parser,则 AuthExceptionFilter 从 设置清单 还有船.
文档
| 节次 | 这是什么 |
|---|---|
| 开始 | 安装、 数据库设置( 3个路径) , env vars, 快速启动后端 / react / Next.js / vanilla |
| 核心概念 | 会议、用户模式、多租期、非洲区域局、外交部、活动、审计 |
| 认证 | 每个登录方法一页 |
| 后端引用 | 模块配置, 实体, 装饰者, 守卫, 服务, 钩子, 事件, 错误代码, 管理员控制台 |
| 生产 | 电子邮件/短信接线、JWT定制、缩放、CORS和安全、测试 |
| 食谱 | 20个复制相贴解决方案——转介代码,定制OAuth,租户切换器等. |
| API 参考 | 自动生成的 REST + 类型脚本类型 |
| FAQ 解决问题( T) | 错误代码 – 可能造成 – 修正 |
配套软件包
| 软件包 | 使用时间 |
|---|---|
@ackplus/nest-auth-client | Vanilla JS / Vue / Angular / Svelte / 反应土著客户端 |
@ackplus/nest-auth-react | 反应提供者、钩子、卫士和Next.js App路由器帮助器 |
@ackplus/nest-auth-contracts | 共有的TS类型——全部由这三类人消费 |
所有4个包都与同版本号一起放出. 把它们绑在同一个版本.