clerk
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseClerk
Clerk
Clerk is a comprehensive user management and authentication service built specifically for the modern web (React, Next.js, Remix). It focuses on providing "Drop-in" UI components (, ) rather than just APIs.
<SignIn /><UserProfile />Clerk是一款专为现代Web应用(React、Next.js、Remix)打造的综合性用户管理与身份验证服务。它专注于提供“即插即用”的UI组件(、),而非仅提供API。
<SignIn /><UserProfile />When to Use
适用场景
- Next.js / React Apps: Best-in-class integration with App Router and Server Components.
- SaaS B2B/B2C: Built-in Organization (Multi-tenancy) management.
- Speed: You want the User Profile, Avatar upload, and Email management UI done for you.
- Next.js / React应用:与App Router和Server Components的集成表现业界领先。
- SaaS B2B/B2C:内置组织(多租户)管理功能。
- 追求开发效率:你希望直接使用现成的用户资料、头像上传和邮件管理UI。
Quick Start (Next.js App Router)
快速开始(Next.js App Router)
typescript
// middleware.ts
import { authMiddleware } from "@clerk/nextjs";
export default authMiddleware({});
// layout.tsx
import { ClerkProvider } from '@clerk/nextjs'
export default function RootLayout({ children }) {
return (
<ClerkProvider>
<html><body>{children}</body></html>
</ClerkProvider>
)
}
// page.tsx (Protected)
import { UserButton, currentUser } from "@clerk/nextjs";
export default async function Page() {
const user = await currentUser();
if (!user) return <div>Not signed in</div>;
return <header>Welcome {user.firstName} <UserButton /></header>;
}typescript
// middleware.ts
import { authMiddleware } from "@clerk/nextjs";
export default authMiddleware({});
// layout.tsx
import { ClerkProvider } from '@clerk/nextjs'
export default function RootLayout({ children }) {
return (
<ClerkProvider>
<html><body>{children}</body></html>
</ClerkProvider>
)
}
// page.tsx (Protected)
import { UserButton, currentUser } from "@clerk/nextjs";
export default async function Page() {
const user = await currentUser();
if (!user) return <div>Not signed in</div>;
return <header>Welcome {user.firstName} <UserButton /></header>;
}Core Concepts
核心概念
Pre-built Components
预构建组件
Clerk provides the full UI: Login, Register, Forgot Password, Managed MFA, User Profile (Change Password, 2FA, Sessions).
Clerk提供完整的UI:登录、注册、找回密码、托管式MFA、用户资料(修改密码、双因素认证、会话管理)。
Sessions vs Tokens
会话与令牌
Clerk handles the complexity of short-lived JWTs ( cookie) and keeps them fresh automatically via frontend SDKs.
__sessionClerk会处理短期JWT( cookie)的复杂性,并通过前端SDK自动保持令牌更新。
__sessionBest Practices (2025)
2025年最佳实践
Do:
- Use Server Components () to fetch user data on the backend.
currentUser() - Use Organizations feature for B2B SaaS apps (Tenant isolation).
- Enable Passkeys (Passwordless) in the dashboard (Clerk supports this natively).
Don't:
- Don't try to build custom UI unless necessary. The pre-built components handle edge cases (MFA, Captcha, Error states) perfectly.
- Don't expose Secret Keys in client-side env vars.
建议:
- 使用Server Components()在后端获取用户数据。
currentUser() - 针对B2B SaaS应用使用Organizations功能(租户隔离)。
- 在控制台中启用Passkeys(无密码登录)功能(Clerk原生支持)。
避免:
- 除非必要,不要尝试构建自定义UI。预构建组件已完美处理边缘情况(MFA、验证码、错误状态)。
- 不要在客户端环境变量中暴露密钥。
Troubleshooting
故障排查
| Error | Cause | Solution |
|---|---|---|
| Middleware not configured. | Ensure |
| HTML mismatch. | Wrap app in |
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 未配置中间件 | 确保 |
| HTML内容不匹配 | 将应用包裹在 |