📘 文档 | ☁️ 托管版本 | ✨ 演示 | 🎮 Discord
Stack Auth:开源的 Clerk/Auth0 替代品
Stack Auth 是一个托管的用户认证解决方案。它对开发者友好,完全开源(基于 MIT 和 AGPL 许可)。
Stack 能让你在短短五分钟内完成设置,之后你就可以随着项目的成长使用它的所有功能。我们的托管服务完全是可选的,你可以随时导出用户数据并免费自行托管。
我们支持 Next.js 前端,以及任何可以使用我们的 REST API 的后端。查看我们的设置指南开始使用。
目录
这与 X 有何不同?
问问自己关于 X
的问题:
X
是开源的吗?X
是否对开发者友好,文档完善,并且让你能在几分钟内开始使用?- 除了认证,
X
是否还提供授权和用户管理功能(参见下面的功能列表)?
如果你对这些问题中的任何一个回答"否",那就是 Stack Auth 与 X
的不同之处。
✨ 特性
支持 OAuth、密码凭证和魔法链接的身份验证组件,共享开发密钥加快设置速度。所有组件支持深色/浅色模式。 | |
符合习惯的 Next.js API我们基于服务器组件、React 钩子和路由处理器构建。 | |
用户仪表板用于过滤、分析和编辑用户的仪表板。替代了您本应构建的第一个内部工具。 | |
账户设置允许用户更新个人资料、验证电子邮件或更改密码。无需设置。 | |
多租户和团队使用合理且可扩展到数百万的组织结构管理 B2B 客户。 | |
基于角色的访问控制定义任意权限图并将其分配给用户。组织可以创建特定于组织的角色。 | |
OAuth 连接除了登录之外,Stack 还可以管理第三方 API 的访问令牌,如 Outlook 和 Google 日历。它处理令牌刷新和控制范围,通过单个函数调用即可访问访问令牌。 | |
身份模拟为调试和支持模拟用户,以他们的身份登录其账户。 | |
Webhooks当用户使用您的产品时获得通知,基于 Svix 构建。 | |
自动邮件在注册、密码重置和电子邮件验证等触发事件时发送可定制的邮件,可使用所见即所得编辑器编辑。 | |
用户会话和 JWT 处理Stack 管理刷新和访问令牌、JWT 和 cookies,无需实现成本即可获得最佳性能。 | |
M2M 身份验证使用短期访问令牌来验证您的机器与其他机器的身份。 |
📦 安装和设置
有关如何在 Next.js 项目中设置 Stack Auth,请参阅我们的文档。
🌱 一些使用 Stack 构建的社区项目
如果你有自己的项目,欢迎创建 PR 或在 Discord 上联系我们,我们很乐意为你展示。
模板
示例
🏗️ 开发与贡献
如果你想为 Stack 项目做出贡献或在本地运行 Stack 仪表板,这部分内容适合你。
重要:请仔细阅读贡献指南,如果你想提供帮助,请加入我们的 Discord。
要求
- Node v20
- pnpm v9
- Docker
设置
对于以下设置,预先填充的 .env 文件默认位于每个包的 .env.development
中。你应该将所有 .env.development
文件复制到各自包中的 .env.local
文件中进行本地开发。
在终端中,以 Docker 容器的形式启动依赖项(Postgres 和 Inbucket):
docker compose -f dependencies.compose.yaml up
然后打开一个新的终端:
pnpm install
# 运行构建以一次性构建所有内容
pnpm run build
# 初始化数据库并填充一些数据
pnpm prisma db push
pnpm prisma db seed
# 运行代码生成(例如在更改 Prisma 架构后重复此操作)。这是构建脚本的一部分,但速度更快
pnpm run codegen
# 启动开发服务器
pnpm run dev
# 在另一个终端中,以监视模式运行测试
pnpm run test
现在你可以在 http://localhost:8101 打开仪表板,API 在 8102 端口,演示在 8103 端口,文档在 8104 端口,Inbucket(电子邮件)在 8105 端口,Prisma Studio 在 8106 端口。
你的 IDE 可能会在所有 @stackframe/XYZ
导入上显示错误。要修复这个问题,只需重启 TypeScript 语言服务器;例如,在 VSCode 中,你可以打开命令面板(Ctrl+Shift+P)并运行 Developer: Reload Window
或 TypeScript: Restart TS server
。
你还可以打开 Prisma Studio 来查看数据库界面并直接编辑数据:
pnpm run prisma studio
数据库迁移
如果你对 Prisma 架构进行了更改,需要运行以下命令来创建迁移:
pnpm run prisma migrate dev
❤️ 贡献者
感谢构建 Stack 的优秀社区: