Maison > Article > interface Web > Tutoriel : Comment intégrer des clés d'accès dans Angular
Dans ce guide, nous expliquerons le processus d'intégration de l'authentification par mot de passe dans une application Angular à l'aide de TypeScript. Les clés d'accès offrent un moyen sécurisé et évolutif de gérer l'authentification des utilisateurs, éliminant ainsi le besoin de mots de passe traditionnels.
Voir le didacticiel complet dans notre article de blog original ici
Avant de commencer, assurez-vous de bien connaître Angular, HTML, CSS et TypeScript. De plus, assurez-vous que Node.js et NPM sont installés sur votre ordinateur. L'installation de la CLI angulaire est recommandée pour ce tutoriel :
npm install -g @angular/cli
Tout d’abord, créons un nouveau projet Angular. Dans cet exemple, nous utilisons Angular version 15.2.9 :
ng new passkeys-demo-angular
Lors de la configuration, choisissez les options suivantes :
Une fois la configuration terminée, exécutez l'application pour vous assurer que tout fonctionne :
ng serve
Pour commencer, créez un compte sur le panneau des développeurs Corbado. Cette étape vous permet de faire l’expérience directe de l’inscription par mot de passe. Après votre inscription, créez un projet dans Corbado en sélectionnant « Corbado Complete » comme produit. Spécifiez « Web app » comme type d'application et pour le framework, sélectionnez Angular. Dans les paramètres de votre application, utilisez les informations suivantes :
Ensuite, vous devrez installer les packages requis pour l'intégration de Corbado. Accédez au répertoire racine de votre projet et installez les packages nécessaires :
npm i @corbado/web-js npm i -D @corbado/types @types/react @types/ua-parser-js
Modifiez le app.component.ts pour initialiser Corbado au démarrage de l'application :
import { Component, OnInit } from '@angular/core'; import Corbado from "@corbado/web-js"; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { title = 'passkeys-demo-angular'; isInitialized = false; constructor() { } ngOnInit(): void { this.initialize(); } async initialize() { try { await Corbado.load({ projectId: "<Your Corbado Project ID>", darkMode: 'off' }); this.isInitialized = true; } catch (error) { console.error('Initialization failed:', error); } } }
Générez deux composants : un pour afficher l'interface utilisateur de connexion par mot de passe et un autre pour afficher les informations utilisateur de base en cas d'authentification réussie :
ng generate component login ng generate component profile
Mettez à jour votre app-routing.module.ts pour définir des itinéraires pour les composants de connexion et de profil :
// src/app/app-routing.module.ts import { NgModule } from '@angular/core'; import { ProfileComponent } from "./profile/profile.component"; import { RouterModule, Routes } from "@angular/router"; import { LoginComponent } from "./login/login.component"; const routes: Routes = [ { path: 'profile', component: ProfileComponent }, { path: 'login', component: LoginComponent }, { path: '', component: LoginComponent }, { path: '**', redirectTo: '/' } ] @NgModule({ imports: [ RouterModule.forRoot(routes) ], exports: [RouterModule] }) export class AppRoutingModule { }
Dans login.component.ts, configurez l'interface utilisateur d'authentification par mot de passe et définissez le comportement après une connexion réussie :
import { Component, OnInit, ViewChild, ElementRef, AfterViewInit } from '@angular/core'; import { Router } from '@angular/router'; import Corbado from "@corbado/web-js"; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'] }) export class LoginComponent implements OnInit, AfterViewInit { @ViewChild('authElement', { static: false }) authElement!: ElementRef; // Access the element constructor(private router: Router) { } ngOnInit() { if (Corbado.user) { this.router.navigate(['/profile']); } } ngAfterViewInit() { // Mount the Corbado auth UI after the view initializes Corbado.mountAuthUI(this.authElement.nativeElement, { onLoggedIn: () => this.router.navigate(['/profile']), // Use Angular's router instead of window.location }); } }
Et dans le login.component.html, ajoutez ce qui suit :
<div #authElement></div>
La page de profil affichera les informations utilisateur de base (ID utilisateur et e-mail) et fournira un bouton de déconnexion. Si l'utilisateur n'est pas connecté, la page l'invitera à revenir à la page d'accueil :
import { Component } from '@angular/core'; import { Router } from "@angular/router"; import Corbado from "@corbado/web-js"; @Component({ selector: 'app-profile', templateUrl: './profile.component.html', styleUrls: ['./profile.component.css'] }) export class ProfileComponent { user = Corbado.user constructor(private router: Router) { } async handleLogout() { await Corbado.logout() await this.router.navigate(['/']); } }
Dans profile.component.html, affichez conditionnellement les informations de l'utilisateur en fonction de son état d'authentification :
<div> <ng-container *ngIf="user; else notLoggedIn"> <div> <h1>Profile Page</h1> <div> <p> User-ID: {{user.sub}} <br /> Email: {{user.email}} </p> </div> <button (click)="handleLogout()">Logout</button> </div> </ng-container> <ng-template #notLoggedIn> <div> <p>You're not logged in.</p> <p>Please go back to <a routerLink="/">home</a> to log in.</p> </div> </ng-template> </div>
Une fois tout configuré, lancez l'application :
ng serve
Visitez http://localhost:4200 pour afficher l'écran de connexion, et après une authentification réussie, vous serez redirigé vers la page de profil.
Ce tutoriel a montré comment intégrer l'authentification par mot de passe dans une application Angular à l'aide de Corbado. Avec les outils de Corbado, la mise en œuvre de l'authentification sans mot de passe est simple et sécurisée. Pour plus de détails sur la gestion de session et d'autres fonctionnalités avancées, reportez-vous à la documentation de Corbado ou consultez l'article de blog détaillé.
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!