首页/AI 应用构建与集成/clerk-nuxt-patterns
C

clerk-nuxt-patterns

by @clerkv
4.5(120)

此技能提供将 Clerk 认证集成到 Nuxt 3 应用的最佳实践和模式。它涵盖了使用中间件进行路由保护、在 Nitro 服务器 API 路由中处理认证,以及利用 `useAuth`/`useUser` 组合式函数实现客户端响应式体验。通过提供 SSR 安全的认证策略,它简化了安全且高性能 Nuxt 应用的开发,减少了常见陷阱并加速了上市时间。

nuxtclerkauthenticationfrontend-developmentweb-developmentGitHub
安装方式
npx skills add https://github.com/clerk/skills --skill clerk-nuxt-patterns
compare_arrows

Before / After 效果对比

1 组
使用前

在 Nuxt 3 应用中手动实现认证功能,特别是要兼顾 SSR 安全性和客户端状态管理时,过程复杂且容易出错,耗时较长。

使用后

采用 Clerk Nuxt 认证模式,通过预置的中间件、组合式函数和服务器路由处理,显著简化了认证集成,确保了安全性和开发效率。

SKILL.md

Nuxt Patterns

What Do You Need?

TaskReference
Protect routes with middlewarereferences/nuxt-middleware.md
Auth in server API routes (Nitro)references/server-api-routes.md
useAuth / useUser in componentsreferences/composables.md
SSR-safe auth patternsreferences/ssr-auth.md

References

ReferenceDescription
references/nuxt-middleware.mdRoute protection, clerkMiddleware()
references/server-api-routes.mdNitro server route auth
references/composables.mduseAuth, useUser, useClerk
references/ssr-auth.mdSSR hydration, server vs client

Setup

npm install @clerk/nuxt

.env:

NUXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
NUXT_CLERK_SECRET_KEY=sk_...

nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@clerk/nuxt'],
})

This single line auto-configures middleware, plugins, and component auto-imports.

Mental Model

@clerk/nuxt auto-imports all Clerk components and composables — no explicit imports needed in <script setup>.

  • Composables (useAuth, useUser) — client-side reactive, inside <script setup>
  • Server routes (clerkClient) — Nitro server routes, event.context.auth
  • Middleware (clerkMiddleware) — auto-registered, use auth().protect() to lock routes

Minimal Pattern

<!-- pages/dashboard.vue -->
<script setup lang="ts">
definePageMeta({ middleware: 'auth' })
const { userId } = useAuth()
</script>

<template>
  <Show when="signed-in">
    <p>Hello {{ userId }}</p>
  </Show>
</template>

definePageMeta({ middleware: 'auth' }) uses the built-in auth middleware from @clerk/nuxt.

Common Pitfalls

SymptomCauseFix
Composables return undefined on serveruseAuth is client-onlyUse event.context.auth in server routes
Route not protectedMissing middleware: 'auth' metaAdd definePageMeta({ middleware: 'auth' })
clerkClient not availableWrong import pathImport from @clerk/nuxt/server
Hydration mismatchRendering auth state before mountedWrap in <ClientOnly> or check isLoaded
Env vars not picked upWrong prefixNuxt requires NUXT_PUBLIC_ for public, NUXT_ for server

Org-Aware Pattern

<script setup lang="ts">
const { orgId, orgRole } = useAuth()
</script>

<template>
  <div v-if="orgId">
    <p>Org: {{ orgId }}</p>
    <p v-if="orgRole === 'org:admin'">Admin panel</p>
  </div>
  <div v-else>
    <OrganizationSwitcher />
  </div>
</template>

See Also

  • clerk-setup - Initial Clerk install
  • clerk-custom-ui - Custom flows & appearance
  • clerk-orgs - B2B organizations

Docs

Nuxt SDK

用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价

统计数据

安装量13.8K
评分4.5 / 5.0
版本
更新日期2026年10月21日
对比案例1 组

用户评分

4.5(120)
5
37%
4
43%
3
13%
2
5%
1
2%

为此 Skill 评分

0.0

兼容平台

🤖claude-code

时间线

创建2026年5月28日
最后更新2026年10月21日
🎁 Agent 知识卡片
调研问卷