---
title: "@vonvon-kit/nuxt"
description: "Module Nuxt 3 avec middleware serveur H3/Nitro et composables Vueauto-importés pour les applications SSR et full-stack."
locale: "fr"
---

> Documentation Index
> Fetch the relevant documentation index at: https://vonvon.id/fr/sdks/llms.txt
> Use this file to discover all available pages before exploring further.

# @vonvon-kit/nuxt

## Statut

Statut du registre : UNPUBLISHED. Installez ce SDK uniquement depuis un checkout du code source du dépôt ; n'utilisez pas de registre de paquets externe.

Le statut du package est **Package actuel**. Le module Nuxt, lemiddleware serveur H3/Nitro et les composables auto-importés sontimplémentés. Un aller-retour réel avec un IdP sur une infrastructure deproduction est en attente de vérification manuelle.

## Configuration du module

Ajoutez `@vonvon-kit/nuxt` au tableau `modules`. Le module importeautomatiquement tous les composables [@vonvon-kit/vue](/fr/sdks/vue) et enregistre unplugin client uniquement qui installe `VonvonPlugin`.

```ts
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@vonvon-kit/nuxt'],
  vonvon: {
browser: {
  mode: 'oidc',
  issuer: 'https://vonvon.id',
  clientId: 'client_abc123',
  redirectUri: 'https://app.example.com/auth/callback',
},
  },
})
```

## Composables (auto-importés)

```vue
<script setup lang="ts">
// No import needed -- Nuxt auto-imports from @vonvon-kit/vue
const auth = useAuth()
const userRef = useUser()
const orgRef = useOrganization()
const sessionRef = useSession()
</script>

<template>
  <div v-if="auth.isSignedIn">
Signed in as {{ auth.userId }}
<button @click="auth.signOut()">Sign out</button>
  </div>
</template>
```

## Middleware serveur (authentification JWT)

`createVonvonServerMiddleware` retourne un gestionnaire H3 qui vérifie un JWT Bearer ou applicatif explicite et écrit dans `event.context.vonvonAuth`. Configurez les sessions Core de même origine avec `sessionTokenExchange` ; les URL relatives H3 v1 exigent aussi un `requestOrigin` fiable. Placez le fichier dans `server/middleware/` pour que Nitro l'enregistre globalement.

```ts
// server/middleware/vonvon.ts
import { createVonvonServerMiddleware } from '@vonvon-kit/nuxt'

export default createVonvonServerMiddleware({
  jwtKey: JSON.parse(process.env.VONVON_JWKS_PUBLIC_KEY!),
  issuer: 'https://acme.vonvon.id',
  sessionTokenExchange: { endpoint: '/v1/sessions/token' },
  requestOrigin: process.env.VONVON_APP_ORIGIN!,
  protectedRoutes: ['/api/admin'],
})
```

## Lecture de l'authentification dans les routes serveur

```ts
// server/routes/api/me.get.ts
import { getVonvonAuth } from '@vonvon-kit/nuxt'

export default defineEventHandler((event) => {
  const auth = getVonvonAuth(event)
  if (!auth.userId) {
throw createError({ statusCode: 401, message: 'Unauthorized' })
  }
  return { userId: auth.userId, orgId: auth.orgId }
})
```

## API exportée

| Exporter | Type | Objectif |
| --- | --- | --- |
| `createVonvonServerMiddleware` | function | Fabrique de gestionnaire d'événements H3 : vérifie le JWT, écritevent.context.vonvonAuth, protège les routes |
| `getVonvonAuth` | function | Lire AuthResult depuis event.context.vonvonAuth dans les routes etgestionnaires serveur |
| `VONVON_AUTH_CONTEXT_KEY` | constante string | Clé de contexte utilisée pour stocker le résultat d'authentification('vonvonAuth') |
| `VonvonServerMiddlewareOptions` | type | jwtKey, issuer, authorizedParties, jwtCookieName, sessionTokenExchange, requestOrigin, protectedRoutes, onUnauthenticated |

## Notes de sécurité

- `event.context.vonvonAuth` est réservé au serveur et n'est jamais envoyéau navigateur.
- Le middleware supprime tout jeton d'authentification fourni par le clientet ne réinjecte que le résultat vérifié.
- Placez le fichier middleware dans `server/middleware/` pour qu'ilcouvre toutes les routes comme middleware Nitro global.

Source: https://vonvon.id/fr/sdks/nuxt/index.mdx
