浏览全部文档 · 8/37

功能简介

Project 是应用资源、认证策略、平台配置、服务开关、API Key、Webhook 与数据权限的主要隔离边界。Project 归属于 Organization,但终端应用请求仍通过 Project ID 选择数据面上下文。

当前支持范围

  • 项目(SUPPORTED):以 Project 隔离应用资源、服务开关、平台配置、API Key、Webhook 与认证策略。

适用场景

  • 为不同应用、环境或团队划分资源。
  • 独立配置 Auth、Platforms、Keys、Webhooks 与服务状态。
  • 避免测试数据和生产凭据跨 Project 混用。

前置条件

  • 拥有目标 Organization 中创建或读取 Project 的权限。
  • 选择稳定且唯一的 Project ID。
  • 为浏览器接入登记正确 Platform/Origin。

Console 操作路径

Console → 选择 Organization → Project;Project Settings 管理名称、Platforms、服务开关和迁移入口,Project Overview 进入 Auth、Databases、Storage、Functions 等服务。

SDK 示例

SDK · TypeScript
import { Client, Projects } from 'appbase-console-sdk';

const client = new Client().setEndpoint('https://<APPBASE_HOST>/v1');
const projects = new Projects(client);
const project = await projects.get({ projectId: '<PROJECT_ID>' });

REST 示例

REST · Bash
curl 'https://<APPBASE_HOST>/v1/projects/<PROJECT_ID>' \
  -H 'Cookie: <CONSOLE_SESSION_COOKIE>'

权限模型

Project 控制面使用 Console 身份与 projects Scope;数据面请求使用 X-Appwrite-Project,再按具体接口接受 Session、JWT 或 API Key。不可见 Project 可以按 not found 处理以避免枚举。

常见错误

现象处理建议
401缺少有效控制面 Session,或数据面请求没有允许的身份。
403已识别 Project,但角色或 Scope 不允许目标操作。
404Project 不存在或当前身份不可见。

当前限制

  • Organization 角色与资源 Permission 分层生效,不能只看其中一个。
  • 服务开关关闭时,相应 API 可能被拒绝。
  • Project ID 不应作为秘密;真正的秘密是 Session、JWT 与 API Key。

Appwrite 兼容说明

Project、Platform、Key 和服务 API 保留兼容概念;AppBase 额外要求理解 Organization 归属。

AppBase 增强说明

AppBase 将 Project 纳入 Organization 治理,并让 AI 与 Schema Version 等能力继续复用同一隔离边界。

发布状态和验证 Commit

origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353

权威来源文件列表

  • backend-candidate:app/controllers/api/projects.php
  • backend-candidate:src/Appwrite/Platform/Modules/Projects/Http/Projects/
  • backend-candidate:tests/e2e/Services/Projects/ProjectsConsoleClientTest.php
  • frontend-candidate:console/src/routes/(console)/project-[region]-[project]/

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs。上游页面不是 AppBase 实现证据。

继续阅读