用途:在完成 Clerk SDK 安装与环境变量配置后,发起第一个已认证请求,验证 Clerk 集成在服务端组件、客户端组件、API 路由和 Server Action 中是否正常工作。
前提条件:已安装 Clerk SDK(clerk-install-auth 已完成);已配置 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY 与 CLERK_SECRET_KEY;应用根节点由 ClerkProvider 包裹;中间件已配置在项目根目录。
主要能力与用法:
- 服务端组件:用 @clerk/nextjs/server 的 auth() 读取会话 JWT 获取 userId,无网络调用;currentUser() 会调用 Backend API,受速率限制,应少用。
- 受保护 API 路由:在 route.ts 中调用 auth(),未登录返回 401,可读取 userId、orgId、sessionClaims。
- 客户端组件:使用 useUser、useAuth、useClerk 钩子,getToken() 返回会话 JWT,可用于携带 Bearer 令牌调用自有 API。
- Server Action:在 'use server' 文件中调用 auth(),未登录抛错,再执行数据库或外部 API 等服务工作。
- Express:使用 @clerk/express 的 clerkMiddleware()、requireAuth()、getAuth(),公开端点返回匿名问候,受保护端点无有效会话返回 403。
错误处理:userId 为 null 表示未认证,应重定向到 /sign-in 或检查中间件覆盖;currentUser() 返回 null 多为会话过期;API 返回 401 需检查 Authorization: Bearer <token> 头;水合不匹配需用 isLoaded 守卫客户端组件;auth() 检测不到 clerkMiddleware() 时,应将 middleware.ts 移到项目根目录。
企业注意事项:热点路径优先用 auth() 避免 Backend API 速率限制;同一请求内可用 React cache() 去重 currentUser();微服务间传递 Clerk JWT 并用 @clerk/backend 或 @clerk/express 验证;2025 年 4 月起默认使用更紧凑的 Session token v2;自定义会话声明可在 Dashboard 的 Sessions 中设置,上限 1.2KB。
限制:资料未提供具体收费、价格与平台支持范围;示例基于 Next.js 与 Express,其他框架暂未提供。