Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Lingkaran Hijau penyewa Workforce
Penyewa eksternal (pelajari selengkapnya)
Tutorial ini adalah bagian 2 dari seri yang menunjukkan pembuatan aplikasi satu halaman (SPA) Angular dan menambahkan autentikasi menggunakan platform identitas Microsoft. Di Bagian 1 dari seri ini, Anda membuat Angular SPA dan menambahkan konfigurasi awal.
Di tutorial ini, Anda akan:
- Menambahkan opsi masuk dan keluar
Prasyarat
- Penyelesaian prasyarat dan langkah-langkah dalam Tutorial: Membuat aplikasi satu halaman Angular
Menambahkan fungsionalitas masuk dan keluar ke aplikasi Anda
Di bagian ini Anda akan menambahkan komponen untuk mendukung fungsionalitas masuk dan keluar di aplikasi Angular Anda. Komponen-komponen ini memungkinkan pengguna untuk mengautentikasi dan mengelola sesi mereka. Anda akan menambahkan routing ke aplikasi untuk mengarahkan pengguna ke komponen yang sesuai berdasarkan status otentikasi mereka.
Untuk mengaktifkan fungsionalitas masuk dan keluar di aplikasi Angular Anda, ikuti langkah-langkah berikut:
src/app/app.component.htmlBuka file dan ganti konten dengan kode berikut.<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>Kode mengimplementasikan bilah navigasi di aplikasi Angular. Ini secara dinamis menampilkan tombol Masuk dan Keluar berdasarkan status autentikasi pengguna dan menyertakan tombol Lihat Profil untuk pengguna yang masuk, meningkatkan antarmuka pengguna aplikasi. Metode
login()danlogout()disrc/app/app.component.tsdipanggil ketika tombol dipilih.src/app/app-routing.module.tsBuka file dan ganti konten dengan kode berikut.// 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 { }Cuplikan kode mengonfigurasi perutean dalam aplikasi Angular dengan membuat jalur untuk komponen Profil dan Rumah . Menggunakan
MsalGuarduntuk menerapkan autentikasi di rute Profil, sementara semua jalur yang tidak sesuai dialihkan ke Beranda komponen.src/app/home/home.component.tsBuka file dan ganti konten dengan kode berikut.// 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); }); } }Kode menyiapkan komponen Angular yang disebut
HomeComponentyang terintegrasi dengan Microsoft Authentication Library (MSAL). Dalam kait siklus hidupngOnInit, komponen berlangganan ke observablemsalSubject$dariMsalBroadcastService, memfilter peristiwa ketika login berhasil. Ketika terjadi peristiwa masuk, hasil autentikasi diambil dan akun aktif di-setel diMsalService, memungkinkan aplikasi untuk mengelola sesi pengguna.src/app/home/home.component.htmlBuka file dan ganti konten dengan kode berikut.<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>Kode ini menyambut pengguna ke aplikasi dan meminta mereka untuk melihat data Microsoft Graph mereka dengan mengklik tautan Tampilkan Profil .
src/main.tsBuka file dan ganti konten dengan kode berikut.import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));Cuplikan kode mengimpor
platformBrowserDynamicdari modul dinamis browser platform Angular danAppModuledari file modul aplikasi. Kemudian menggunakanplatformBrowserDynamic()untuk bootstrapAppModule, menginisialisasi aplikasi Angular. Setiap kesalahan yang terjadi selama proses bootstrap ditangkap dan dicatat ke konsol.src/index.htmlBuka file dan ganti konten dengan kode berikut.<!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>Cuplikan kode mendefinisikan dokumen HTML5 dengan bahasa Inggris sebagai bahasa dan pengodean karakter UTF-8. Ini mengatur judul ke "MSAL Untuk JavaScript - Angular SPA." Isi mencakup
<app-root>komponen sebagai titik masuk utama dan<app-redirect>komponen untuk fungsionalitas pengalihan.src/styles.cssBuka file dan ganti konten dengan kode berikut.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; }Kode CSS menata halaman web dengan mengatur font isi ke tumpukan sans-serif modern, menghapus margin default, dan menerapkan penghalusan font untuk keterbacaan yang ditingkatkan. Ini memusatkan teks dan menambahkan padding ke kelas
.app,.title, dan.profile, sementara kelas.profileButtonmenggunakan flexbox untuk memusatkan elemennya.