Maison > interface Web > js tutoriel > Nuxflare Auth : un serveur d'authentification léger auto-hébergé construit avec Nuxt, Cloudflare et OpenAuth.js

Nuxflare Auth : un serveur d'authentification léger auto-hébergé construit avec Nuxt, Cloudflare et OpenAuth.js

Linda Hamilton
Libérer: 2025-01-13 18:30:44
original
940 Les gens l'ont consulté

Nuxflare Auth est un serveur d'authentification moderne, léger et auto-hébergé conçu pour faciliter l'ajout d'authentification à vos applications. Construit avec Nuxt 3, Cloudflare Workers et OpenAuth.js, il regroupe tout ce dont vous avez besoin en un seul endroit.

Nuxflare Auth: A lightweight self-hosted auth server built with Nuxt, Cloudflare and OpenAuth.js nuxflare / authentification

Un serveur d'authentification moderne, léger et auto-hébergé, construit avec Cloudflare, Nuxt et OpenAuth.js.

Nuxflare Auth: A lightweight self-hosted auth server built with Nuxt, Cloudflare and OpenAuth.js

Authentification Nuxflare

Un serveur d'authentification moderne, léger et auto-hébergé, construit avec Cloudflare, Nuxt et OpenAuth.js.

Qu'est-ce que c'est ?

Nuxflare Auth vous permet d'ajouter une authentification à vos applications sans prise de tête. C'est un monorepo qui regroupe tout ce dont vous avez besoin :

  • Une interface utilisateur d'authentification élégante construite avec Nuxt 3 et @nuxt/ui
  • La magie de l'authentification backend exécutée sur Cloudflare Workers
  • Un exemple prêt à l'emploi pour que vous puissiez voir comment tout cela s'emboîte

Caractéristiques

  • ? Interface utilisateur d'authentification complète comprenant :
    • Connexion basée sur un code
    • Connexion par mot de passe
    • Flux de mot de passe oublié
    • Inscription des utilisateurs
  • ? Authentification OAuth2 avec GitHub et Google (ajoutez facilement plus de fournisseurs)
  • ✉️ E-mails utilisant Renvoyer (ou utiliser tout autre fournisseur)
  • ⚡ Rapide comme l'éclair, alimenté par le réseau périphérique de Cloudflare

Mise en page du projet

packages/
  ├── auth-frontend/   # auth UI components
  ├── emails/          # react email templates
  ├── example-client/  # example nuxt client
  └── functions/       # cloudflare workers
Copier après la connexion
Copier après la connexion
Copier après la connexion

Prérequis

Avant de commencer, vous aurez besoin de :

  • pnpm
  • Un compte Cloudflare
  • Identifiants OAuth de Google…
Voir sur GitHub

Pourquoi Nuxflare Auth ?

Avec Nuxt, il existe déjà de bons modules d'authentification comme nuxt-auth-utils et sidebase-auth.
Alors, en quoi Nuxflare Auth est-il différent ?

  • Authentification découplée : Nuxflare Auth vous permet de déployer le serveur d'authentification et l'interface utilisateur d'authentification (construite avec Nuxt UI) séparément de votre application principale. Cela signifie que vous pouvez facilement réutiliser votre serveur d'authentification pour travailler avec plusieurs applications côté client (construites avec Nuxt ou non), des API externes, des applications mobiles, etc.
  • Encourage l'architecture Monorepo : En divisant votre application Nuxt et votre module d'authentification, Nuxflare Auth maintient la taille du bundle minimale, ce qui est parfait pour les déploiements sur Cloudflare Workers, qui ont des limites de taille strictes : 3 Mo pour le forfait gratuit et 10 Mo pour le forfait gratuit. le forfait payant.

Structure du projet

packages/
  ├── auth-frontend/   # auth UI components
  ├── emails/          # react email templates
  ├── example-client/  # example nuxt client
  └── functions/       # cloudflare workers
Copier après la connexion
Copier après la connexion
Copier après la connexion

Déployer l'authentification Nuxflare

Conditions préalables

  • pnpm
  • Un compte Cloudflare
  • Identifiants OAuth de Google et GitHub
  • Une clé API Renvoyer pour l'envoi d'emails

Commencer

  1. Clonez le référentiel et installez les dépendances :
packages/
  ├── auth-frontend/   # auth UI components
  ├── emails/          # react email templates
  ├── example-client/  # example nuxt client
  └── functions/       # cloudflare workers
Copier après la connexion
Copier après la connexion
Copier après la connexion
  1. Créer et configurer un jeton API :

a. Créez un jeton API Cloudflare avec les autorisations requises en utilisant ce lien.
b. Définissez la variable d'environnement CLOUDFLARE_API_TOKEN :

   git clone https://github.com/nuxflare/auth nuxflare-auth
   cd nuxflare-auth
   pnpm install
Copier après la connexion
  1. Configurez vos secrets :
   export CLOUDFLARE_API_TOKEN=GahXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Copier après la connexion
  1. Configurez votre fromEmail dans sst.config.ts :
   # OAuth stuff
   pnpm sst secret set GoogleClientID your_client_id
   pnpm sst secret set GoogleClientSecret your_client_secret
   pnpm sst secret set GithubClientID your_client_id
   pnpm sst secret set GithubClientSecret your_client_secret

   # For emails
   pnpm sst secret set ResendApiKey your_resend_api_key
Copier après la connexion
  1. Démarrer le développement local :
   async run() {
     const fromEmail = "hi@nuxflare.com";
     // ...
   }
Copier après la connexion
  1. Déployer en production :
   pnpm dev
Copier après la connexion

Exemple d'application client

Le référentiel comprend un exemple d'application client simple dans packages/example-client.

L'API pour les composables est très similaire à nuxt-auth-utils :

   pnpm sst deploy --stage production
Copier après la connexion

Vous devez pointer le client vers le point de terminaison de votre instance d'authentification déployée :

```typescript [packages/example-client/app/utils/auth.ts]
const client = créerClient({
ID client : "nuxt",
émetteur : "https://authdemo.nuxflare.com", // <-- remplacez-le par votre point de terminaison
});

export const useSession = () => {
  const sessionState = useSessionState();
  const accessToken = useAccessTokenCookie();
  const refreshToken = useRefreshTokenCookie();
  const clear = () => {
    sessionState.value = {};
    accessToken.value = null;
    refreshToken.value = null;
  };
  return {
    loggedIn: computed(() => !!sessionState.value.user),
    user: computed(() => sessionState.value.user || null),
    session: sessionState,
    clear,
  };
};



          

            
        

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal