可复用的 @foldspace-fe/casdoor-next-auth-kit 包的源码仓库,包含 CLI 脚手架工具、skill 分发源和 Next.js 演示应用。
Published package page:
Install:
npm install @foldspace-fe/casdoor-next-auth-kit该包刻意设计为无头(headless)架构:
- 将 Casdoor 认证体验完全内嵌于宿主应用,用户不应感知到跳转
- 通过同源路由壳代理 Casdoor 的登录、注册、回调、注销和电商流程
- 提供 React 钩子和 Provider 包装,宿主应用无需直接导入
next-auth/react - 将 Casdoor 特有的 UI 和导航隐藏在宿主壳之后
packages/auth-kit:可复用的认证、电商、React 钩子和宿主模板辅助工具packages/auth-kit/src/cli.ts:CLI 入口,支持init、update、check三条命令apps/demo:冒烟测试和手动验证用的演示应用skills/casdoor-next-auth-kit/:供宿主项目使用的规范 skill 目录skills/casdoor-next-auth-kit/references/:Casdoor 个人操作 API 参考(markdown + swagger)scripts/install-skill.mjs:将整个 skill 目录安装到目标项目.agents/skills目录的复制脚本- 生成的认证路由壳位于
app/(auth-kit)下,保持就近放置但不改变 URL 结构 /auth/login— 宿主项目的登录入口路由/auth/signup— 宿主项目的注册入口路由/login/oauth/authorize— 应用内的 Casdoor 登录授权壳,进入时会先清理当前域残留的认证 cookie,再继续渲染授权界面/signup/oauth/authorize— 应用内的 Casdoor 注册授权壳,进入时会先清理当前域残留的认证 cookie,再继续渲染授权界面- 壳路由是同源包装器,用户看到的是宿主应用的统一体验,而非 Casdoor 原始页面
- CLI 管理的宿主文件:
app/auth/index-html.ts.env/.env.local/.env.production/.env.exampleprisma/auth-kit.prisma
通过 npx 直接使用包:
npx @foldspace-fe/casdoor-next-auth-kit@latest init # 初始化:安装 skill、生成路由壳、配置 Next.js
npx @foldspace-fe/casdoor-next-auth-kit@latest update # 更新:重新生成路由壳、同步 skill 和配置文件
npx @foldspace-fe/casdoor-next-auth-kit@latest check # 检查:验证宿主项目配置与生成物是否一致
npx @foldspace-fe/casdoor-next-auth-kit@latest --versionnpx 会读取 package 的 bin 入口并执行 casdoor-next-auth-kit 这个 CLI,所以 @latest 形式可以直接调用这些命令。
这些命令生成或刷新宿主项目的受管理路由壳,同时保持受管理的环境文件、skill 副本、app/auth/index-html.ts 和 Prisma schema 脚手架同步。
仓库的 npm 发布也由 GitHub Actions 自动处理:
push到main时,会同时参考 npm 仓库的最新已发布版本和最近的v*tag,取更高的基线后递增 patch,再发布到 npmnext- 发布完成后,GitHub Actions 会把同一个版本提升为 npm
latest pushv0.1这类 tag 时,会规范化成0.1.0并发布到 npmlatest- 如果最近的 tag 是
v0.1,那么下一次mainpush 会自动发布0.1.1
生成的认证壳应被视为宿主控制的集成点:
/auth/login作为宿主应用的登录入口路由/auth/signup作为宿主应用的注册入口路由/login/oauth/authorize作为宿主应用的登录授权壳,进入时先清理当前域残留的认证 cookie/signup/oauth/authorize作为宿主应用的注册授权壳,进入时先清理当前域残留的认证 cookie- Casdoor API 请求通过
/auth/api/*代理转发 - 回调(callback)和注销(logout)保持为宿主路由
- 用户应体验到连贯的应用内流程,而非直接跳转到 Casdoor 自身的 UI
将共享 skill 安装到目标项目:
node scripts/install-skill.mjs /path/to/host-project脚本将写入:
/path/to/host-project/.agents/skills/casdoor-next-auth-kit//path/to/host-project/.agents/skills/casdoor-next-auth-kit/references/
- 宿主项目导入包后只需保持薄路由壳包装,认证逻辑由包内部处理
- 宿主项目拥有 Prisma 数据表和持久化实现的完全控制权
- 包负责认证和电商契约、路由辅助工具、React 钩子和生成的路由模板
pnpm install
pnpm dev在宿主项目中,推荐的手动冒烟测试流程:
pnpm run dev然后在浏览器中验证:
- 访问
GET /auth/login?redirect=%2F - 访问
GET /login/oauth/authorize - 使用测试账号登录
- 确认登录后用户菜单显示管理员操作
- 访问
GET /auth/signup - 访问
GET /signup/oauth/authorize - 访问
GET /logout - 确认
/api/auth/session注销后返回空对象
如果注销状态异常,先刷新宿主项目的生成文件:
npx @foldspace-fe/casdoor-next-auth-kit@latest update本仓库的代码刻意采用脚手架结构,便于迭代 Casdoor 集成、代理行为、数据库契约和宿主项目模板。