Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Cercle vert des locataires de main-d’œuvre
Locataires externes (en savoir plus)
Ce tutoriel fait partie 2 d’une série qui illustre la création d’une application monopage Angular (SPA) et l’ajout d’authentification à l’aide de la plateforme d’identités Microsoft. Dans la partie 1 de cette série, vous avez créé un SPA Angular et ajouté des configurations initiales.
Dans ce tutoriel, vous allez :
- Ajouter les options de connexion et de déconnexion
Prérequis
- Achèvement des prérequis et des étapes du didacticiel : Créer une application monopage Angular
Ajoutez des fonctionnalités de connexion et de déconnexion à votre application
Dans cette section, vous allez ajouter des composants pour prendre en charge la fonctionnalité de connexion et de déconnexion dans votre application Angular. Ces composants permettent aux utilisateurs d’authentifier et de gérer leurs sessions. Vous allez ajouter le routage à l’application pour diriger les utilisateurs vers les composants appropriés en fonction de leur état d’authentification.
Pour activer la fonctionnalité de connexion et de déconnexion dans votre application Angular, procédez comme suit :
Ouvrez le fichier
src/app/app.component.htmlet remplacez son contenu par le code suivant.<a class="navbar navbar-dark bg-primary" variant="dark" href="/"> <a class="navbar-brand"> Microsoft Identity Platform </a> <a> <button *ngIf="!loginDisplay" class="btn btn-secondary" (click)="login()">Sign In</button> <button *ngIf="loginDisplay" class="btn btn-secondary" (click)="logout()">Sign Out</button> </a> </a> <a class="profileButton"> <a [routerLink]="['profile']" class="btn btn-secondary" *ngIf="loginDisplay">View Profile</a> </a> <div class="container"> <router-outlet></router-outlet> </div>Le code implémente une barre de navigation dans une application Angular. Il affiche dynamiquement les boutons Connexion et Déconnexion en fonction de l’état d’authentification utilisateur et inclut un bouton Afficher le profil pour les utilisateurs connectés, améliorant l’interface utilisateur de l’application. Les méthodes
login()etlogout()danssrc/app/app.component.tssont appelées lorsque les boutons sont sélectionnés.Ouvrez le fichier
src/app/app-routing.module.tset remplacez son contenu par le code suivant.// Required for Angular import { NgModule } from '@angular/core'; // Required for the Angular routing service import { Routes, RouterModule } from '@angular/router'; // Required for the "Profile" page import { ProfileComponent } from './profile/profile.component'; // Required for the "Home" page import { HomeComponent } from './home/home.component'; // MsalGuard is required to protect routes and require authentication before accessing protected routes import { MsalGuard } from '@azure/msal-angular'; // Define the possible routes // Specify MsalGuard on routes to be protected // '**' denotes a wild card const routes: Routes = [ { path: 'profile', component: ProfileComponent, canActivate: [ MsalGuard ] }, { path: '**', component: HomeComponent } ]; // Create an NgModule that contains all the directives for the routes specified above @NgModule({ imports: [RouterModule.forRoot(routes, { useHash: true })], exports: [RouterModule] }) export class AppRoutingModule { }L’extrait de code configure le routage dans une application Angular en établissant des chemins d’accès aux composants Profil et Accueil. Il utilise
MsalGuardpour appliquer l’authentification sur l’itinéraire Profil, tandis que tous les chemins d’accès non correspondants redirigent vers le composant Accueil.Ouvrez le fichier
src/app/home/home.component.tset remplacez son contenu par le code suivant.// Required for Angular import { Component, OnInit } from '@angular/core'; // Required for MSAL import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; // Required for Angular multi-browser support import { EventMessage, EventType, AuthenticationResult } from '@azure/msal-browser'; // Required for RJXS observables import { filter } from 'rxjs/operators'; @Component({ selector: 'app-home', templateUrl: './home.component.html' }) export class HomeComponent implements OnInit { constructor( private authService: MsalService, private msalBroadcastService: MsalBroadcastService ) { } // Subscribe to the msalSubject$ observable on the msalBroadcastService // This allows the app to consume emitted events from MSAL ngOnInit(): void { this.msalBroadcastService.msalSubject$ .pipe( filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), ) .subscribe((result: EventMessage) => { const payload = result.payload as AuthenticationResult; this.authService.instance.setActiveAccount(payload.account); }); } }Le code configure un composant Angular appelé
HomeComponentqui s’intègre à la bibliothèque d’authentification Microsoft (MSAL). Dans le hook de cycle de viengOnInit, le composant s’abonne aumsalSubject$observable à partir deMsalBroadcastService, en filtrant les événements de réussite de connexion. Lorsqu’un événement de connexion se produit, il récupère le résultat d’authentification et définit le compte actif dans leMsalService, ce qui permet à l’application de gérer les sessions utilisateur.Ouvrez le fichier
src/app/home/home.component.htmlet remplacez son contenu par le code suivant.<div class="title"> <h5> Welcome to the Microsoft Authentication Library For JavaScript - Angular SPA </h5> <p >View your data from Microsoft Graph by clicking the "View Profile" link above.</p> </div>Le code accueille les utilisateurs dans l’application et les invite à afficher leurs données Microsoft Graph en cliquant sur le lien Afficher le profil.
Ouvrez le fichier
src/main.tset remplacez son contenu par le code suivant.import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));L’extrait de code importe
platformBrowserDynamicdepuis le module dynamique du navigateur de la plateforme Angular etAppModuledepuis le fichier module de l’application. Il utilise ensuiteplatformBrowserDynamic()pour démarrer leAppModule, initialisant l’application Angular. Toutes les erreurs qui se produisent pendant le processus de démarrage sont interceptées et enregistrées dans la console.Ouvrez le fichier
src/index.htmlet remplacez son contenu par le code suivant.<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>MSAL For JavaScript - Angular SPA</title> </head> <body> <app-root></app-root> <app-redirect></app-redirect> </body> </html>L’extrait de code définit un document HTML5 avec l’anglais comme langue et un codage de caractères UTF-8. Il définit le titre sur « MSAL For JavaScript : Angular SPA ». Le corps inclut le composant
<app-root>comme point d’entrée principal et le composant<app-redirect>pour les fonctionnalités de redirection.Ouvrez le fichier
src/styles.csset remplacez son contenu par le code suivant.body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } .app { text-align: center; padding: 8px; } .title{ text-align: center; padding: 18px; } .profile{ text-align: center; padding: 18px; } .profileButton{ display: flex; justify-content: center; padding: 18px; }Le code CSS met en forme la page web en définissant la police du corps sur une pile sans serif moderne, en supprimant les marges par défaut et en appliquant un lissage de la police pour améliorer la lisibilité. Il centre le texte et ajoute une marge intérieure aux classes
.app,.titleet.profile, tandis que la classe.profileButtonutilise Flexbox pour centrer ses éléments.