用途:为 Next.js 应用集成 Clerk 认证提供进阶模式参考,基础安装配置需另见 clerk-setup。
主要能力与主题:服务端与客户端认证(await auth() 与 useAuth() 钩子)、中间件策略(public-first 与 protected-first,Next.js <=15 使用 middleware.ts,新版为 proxy.ts)、Server Actions 保护、API 路由鉴权(401 与 403 区分)、用户级认证数据缓存、会话令牌与自定义 JWT、手动 JWT 校验。
关键用法:服务端从 @clerk/nextjs/server 导入 auth 并必须 await,可获取 isAuthenticated、sessionStatus、userId、orgId、orgSlug、has()、protect();客户端使用 useAuth()(同步)。两者不可混用。客户端条件渲染可用 <Show when="signed-in">,Core 2 需改用 <SignedIn>/<SignedOut>。getToken({ template }) 可向 Hasura、Supabase 等第三方服务传递自定义 JWT,未认证时返回 null,需判空。独立 API 服务可用 @clerk/backend 的 verifyToken 校验 Authorization 头或 __session cookie 中的令牌,或用 jsonwebtoken 配合 CLERK_PEM_PUBLIC_KEY 与 RS256 校验,并检查 exp、nbf。
常见陷阱:Server Component 中 userId 为 undefined 通常是漏写 await;API 路由失效多为 matcher 缺失;缓存串用户是 key 未含 userId;Server Action 未在开头校验 auth() 会绕过鉴权。
限制:版本差异以 package.json 中 SDK 版本为准,Core 2 不支持 isAuthenticated 与 sessionStatus,需改用 !!userId;具体版本对应表见 clerk skill。资料未提供收费、价格与平台支持信息。