工作原理
"在TypeScript的世界里,授权管理就像是在迷宫中寻找出口——每个项目都需要,但实现起来总是充满挑战。直到Kilpi出现,一切都变得简单了。"
什么是Kilpi?
Kilpi是一个开源的TypeScript授权框架,专为现代Web应用设计。它让复杂的授权逻辑变得像写一行代码那么简单。
graph LR
A[开发者痛点] --> B[复杂授权逻辑]
B --> C[Kilpi解决方案]
C --> D[一行代码实现授权]
为什么开发者需要Kilpi?
🚀 框架无关性
- 无论你使用什么前端框架(React, Vue, Angular)或后端框架
- 无需重写现有代码即可集成
🔒 服务器优先设计
- 所有授权决策都在服务器端执行
- 彻底杜绝客户端授权漏洞
🧩 支持所有认证提供商
- 无论是Auth0、Clerk还是自建方案
- 通过Subject API无缝集成
Kilpi的核心优势
1. 策略即代码
用TypeScript编写类型安全的授权策略:
const policy = (user) => user.role === 'admin' || user.department === 'engineering'
2. 异步策略支持
const asyncPolicy = async (user) => {
const permissions = await db.fetchUserPermissions(user.id)
return permissions.includes('edit-content')
}
3. 支持所有授权模型
- RBAC (基于角色的访问控制)
- ABAC (基于属性的访问控制)
- ReBAC (基于关系的访问控制)
真实场景中的应用
电商平台案例
flowchart TD
User[用户登录] --> Auth[认证提供商]
Auth --> Kilpi[Kilpi授权层]
Kilpi -->|允许/拒绝| API[业务API]
医疗系统案例
- 医生可以查看自己患者的记录
- 护士只能查看分配的病患
- 管理员有完全访问权限
开发者体验至上
🛠️ 插件生态系统
- 现成的框架适配器(Next.js, Express等)
- 实用工具插件
- 自定义插件API
✨ TypeScript极致体验
生产环境验证
Kilpi已经在多个生产环境中经受考验:
- 日活百万的SaaS平台
- 金融科技应用
- 医疗健康系统
如何开始使用?
- 安装核心库:
npm install @kilpi/core
- 创建你的第一个策略:
import { createPolicy } from '@kilpi/core'
const adminPolicy = createPolicy((user) => user.role === 'admin')
- 集成到你的应用:
app.get('/admin', authorize(adminPolicy), (req, res) => {
})
为什么选择Kilpi而不是其他方案?
| 特性 |
Kilpi |
传统方案 |
| TypeScript支持 |
✅ 一流 |
❌ 有限 |
| 框架无关性 |
✅ 是 |
❌ 否 |
| 服务器优先 |
✅ 是 |
❌ 混合 |
| 策略灵活性 |
✅ 极高 |
❌ 有限 |
下一步行动
📚 查看完整文档 开始你的Kilpi之旅
💻 在GitHub上给我们一个⭐️支持开源开发
"在授权管理的世界里,Kilpi就像是给你的应用装上了智能门禁系统——知道谁可以进,谁不能进,而且永远不会出错。"
主要特性
- 框架无关: 可与任何现有技术栈配合使用。
- 服务器优先授权: 所有授权均在服务器端运行以确保安全。
- 支持任何认证提供商: 通过Subject API支持所有认证提供商。
- 策略即代码: 使用类型安全的TypeScript实现策略。
- 异步策略: 在授权过程中从数据库或API获取数据。
- 支持所有授权模型: 支持RBAC、ABAC、ReBAC等模型。
- 受保护的查询: 包装查询以确保数据访问安全。
- 客户端授权: 通过去重和缓存获取授权决策。
- 插件API与库: 通过自定义或现成插件扩展Kilpi功能。
- 开发者友好的API: 简洁、直观的API设计。