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: Penyewa tenaga kerja
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.html
Buka 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.ts
dipanggil ketika tombol dipilih.src/app/app-routing.module.ts
Buka 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
MsalGuard
untuk menerapkan autentikasi di rute Profil, sementara semua jalur yang tidak sesuai dialihkan ke Beranda komponen.src/app/home/home.component.ts
Buka 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
HomeComponent
yang 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.html
Buka 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.ts
Buka 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
platformBrowserDynamic
dari modul dinamis browser platform Angular danAppModule
dari file modul aplikasi. Kemudian menggunakanplatformBrowserDynamic()
untuk bootstrapAppModule
, menginisialisasi aplikasi Angular. Setiap kesalahan yang terjadi selama proses bootstrap ditangkap dan dicatat ke konsol.src/index.html
Buka 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.css
Buka 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.profileButton
menggunakan flexbox untuk memusatkan elemennya.