SuperAPI AI 工具集

auth-setup

安全与审计

查看项目

更新于 11-02 16:14

技能介绍

用途

auth-setup 是 Convex Agent Plugins 提供的一个认证搭建技能,用于在 Convex 项目中实现安全的身份认证、用户管理与访问控制。资料说明其适用场景包括:首次设置认证、实现用户管理(用户表、身份映射)、创建认证辅助函数,以及配置 OAuth 提供商(如 WorkOS、Auth0 等)。

架构概览

资料将 Convex 认证划分为两个主要部分:

  • 客户端认证:使用认证提供商(WorkOS、Auth0 或自定义 JWT)。
  • 后端身份:将认证提供商的身份映射到自己的 users 表。

主要能力

1. Schema 设计

示例中 users 表包含 tokenIdentifier(每个认证提供商唯一)、name、email、pictureUrl(可选)、role(user/admin 联合类型)、createdAt、updatedAt(可选),并建立 by_token 与 by_email 索引。

2. 核心辅助函数

  • getCurrentUser:获取当前用户,未认证或用户不存在时抛错。
  • getCurrentUserOrNull:未认证时返回 null,用于可选认证场景。
  • requireAdmin:要求当前用户角色为 admin。

3. 用户创建与更新

storeUser mutation 在身份存在时按 tokenIdentifier 查询;已有用户则更新 updatedAt,否则插入新用户(默认角色 user),返回用户 ID。

4. 访问控制模式

  • 仅所有者:如 updateProfile 只修改当前用户资料。
  • 资源所有权:如 deleteTask 校验 task.userId 与当前用户一致。
  • 团队访问:通过 teamMembers 表及 by_team_and_user 索引,requireTeamAccess 校验成员身份。
  • 公开/私有/混合查询:分别展示无需认证、必须认证、可选认证三种查询写法。

5. 客户端接入(WorkOS AuthKit)

React/Vite:安装 @workos-inc/authkit-react,用 AuthKitProvider 包裹,并调用 convex.setAuth(useAuth)。

Next.js:安装 @workos-inc/authkit-nextjs,在 ConvexClientProvider 中使用 useAuth 的 getToken 设置 convex.setAuth。

资料还列出相应环境变量:VITE_CONVEX_URL、VITE_WORKOS_CLIENT_ID,以及 Next.js 下的 NEXT_PUBLIC_CONVEX_URL、NEXT_PUBLIC_WORKOS_CLIENT_ID、WORKOS_API_KEY、WORKOS_COOKIE_PASSWORD。

6. 登录后调用 storeUser

在客户端用户登录后通过 useMutation(api.users.storeUser) 触发用户创建/更新。

使用方式

资料以代码示例形式给出完整步骤:定义 schema、编写辅助函数、实现 storeUser、在受保护函数中调用鉴权、配置客户端提供商与环境变量。也给出检查清单:users 表与 tokenIdentifier 索引、getCurrentUser 辅助函数、storeUser mutation、受保护函数的认证检查、资源访问的授权检查、清晰的错误消息、客户端认证提供商配置。

适用场景

需要为 Convex 项目建立用户体系与权限控制的开发场景,包括个人资料、资源归属、团队协作、公开与私有数据读取等。

限制

资料仅以 WorkOS AuthKit 为客户端的详细示例,其他提供商(自定义 JWT、Auth0、其他 OAuth)仅提及可查阅 Convex 认证文档,未提供具体步骤。资料未说明付费、价格、平台要求或效果评估。