Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Locatários da força de trabalho
Inquilinos externos (saiba mais)
Este tutorial é a parte 2 de uma série que demonstra a criação de um aplicativo de página única (SPA) Angular e a adição de autenticação usando a plataforma de identidade da Microsoft. Na Parte 1 desta série , criou-se uma SPA Angulare adicionaram-se configurações iniciais.
Neste tutorial, você:
- Adicionar entrada e saída
Pré-requisitos
- Conclusão dos pré-requisitos e etapas em Tutorial: Criar um aplicativo de página única Angular
Adicionar funcionalidade de entrada e saída ao seu aplicativo
Nesta seção, você adicionará componentes para dar suporte à funcionalidade de entrada e saída em seu aplicativo Angular. Esses componentes permitem que os usuários autentiquem e gerenciem suas sessões. Você adicionará roteamento ao aplicativo para direcionar os usuários para os componentes apropriados com base em seu status de autenticação.
Para habilitar a funcionalidade de entrada e saída em seu aplicativo Angular, siga estas etapas:
Abra o
src/app/app.component.htmlarquivo e substitua o conteúdo pelo código a seguir.<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>O código implementa uma barra de navegação em um aplicativo Angular. Ele exibe dinamicamente os botões Entrar e Sair com base no status de autenticação do usuário e inclui um botão Exibir perfil para usuários conectados, aprimorando a interface do usuário do aplicativo. Os métodos
login()elogout()emsrc/app/app.component.tssão chamados quando os botões são selecionados.Abra o
src/app/app-routing.module.tsarquivo e substitua o conteúdo pelo código a seguir.// 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 { }O trecho de código configura o roteamento em um aplicativo Angular estabelecendo caminhos para os componentes Profile e Home . Usa
MsalGuardpara impor autenticação na rota Perfil, enquanto todos os percursos não correspondidos redirecionam para o componente Home.Abra o
src/app/home/home.component.tsarquivo e substitua o conteúdo pelo código a seguir.// 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); }); } }O código configura um componente Angular chamado
HomeComponentque se integra com a Microsoft Authentication Library (MSAL). No gancho do ciclo de vidangOnInit, o componente subscreve o observávelmsalSubject$deMsalBroadcastService, filtrando eventos de sucesso de login. Quando ocorre um evento de login, ele recupera o resultado da autenticação e define a conta ativa noMsalService, permitindo que o aplicativo gerencie sessões de usuário.Abra o
src/app/home/home.component.htmlarquivo e substitua o conteúdo pelo código a seguir.<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>O código dá as boas-vindas aos usuários ao aplicativo e solicita que eles visualizem seus dados do Microsoft Graph clicando no link Exibir perfil .
Abra o
src/main.tsarquivo e substitua o conteúdo pelo código a seguir.import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));O trecho de código importa
platformBrowserDynamicdo módulo dinâmico do navegador da plataforma Angular eAppModuledo ficheiro de módulo da aplicação. Em seguida, ele usaplatformBrowserDynamic()para inicializar oAppModule, inicializando o aplicativo Angular. Quaisquer erros que ocorram durante o processo de bootstrap são detetados e registrados no console.Abra o
src/index.htmlarquivo e substitua o conteúdo pelo código a seguir.<!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>O trecho de código define um documento HTML5 com inglês como idioma e codificação de caracteres UTF-8. Ele define o título como "MSAL para JavaScript - SPA angular". O corpo inclui o componente
<app-root>como ponto de entrada principal e o componente<app-redirect>para funcionalidades de redirecionamento.Abra o
src/styles.cssarquivo e substitua o conteúdo pelo código a seguir.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; }O código CSS estiliza a página web definindo a fonte do corpo como uma família sans-serif moderna, removendo margens padrão e aplicando suavização de fontes para melhorar a legibilidade. Ele centraliza o
.apptexto e adiciona preenchimento às classes ,.titlee.profile, enquanto a.profileButtonclasse usa flexbox para centralizar seus elementos.