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.
Cara mengonfigurasi
Secara bawaan, saat MSAL.js perlu menavigasi dari satu halaman di aplikasi Anda ke halaman lain, MSAL.js akan menetapkan ulang window.location, sehingga terjadi pengalihan bingkai penuh ke halaman lain dan aplikasi Anda dirender ulang. Jika Anda menggunakan Router Angular, ini mungkin tidak dapat dipastikan karena Router memungkinkan navigasi "sisi klien" dan menunjukkan atau menyembunyikan hanya bagian halaman seperlunya.
Saat ini ada satu skenario di mana MSAL.js akan menavigasi dari satu halaman di aplikasi Anda ke halaman lainnya. Jika aplikasi Anda melakukan semua hal berikut, lanjutkan membaca:
- Aplikasi Anda menggunakan alur pengalihan, alih-alih alur popup, untuk masuk
-
PublicClientApplicationdikonfigurasi denganauth.navigateToLoginRequestUrl: true(default) - Aplikasi Anda memiliki halaman yang dapat memanggil
loginRedirect/acquireTokenRedirectdengan berbagiredirectUriyaitu Anda memanggilloginRedirectdarihttp://localhost/protecteddengan redirectUrihttp://localhost
Jika aplikasi Anda melakukan semua hal di atas, Anda dapat mengambil alih metode yang digunakan MSAL untuk menavigasi dengan mengimpor MsalCustomNavigationClient dan memanggil setNavigationClient.
CATATAN: Karena perbaikan keamanan, MsalCustomNavigationClient tidak akan menggunakan Angular Router untuk menavigasi sisi klien ketika navigateToLoginRequestUrl diatur ke true dan menangani pengalihan. Ini adalah masalah umum yang akan ditangani dalam rilis mendatang.
Contoh Implementasi
Contoh di bawah ini akan menunjukkan cara menerapkan ini saat menggunakan Angular Router. Informasi lebih lanjut tentang Angular Router dapat ditemukan di sini, dan Anda dapat menemukan aplikasi sampel lengkap yang mengimplementasikan ini untuk Angular di sini.
import { Component, OnInit, Inject } from '@angular/core';
import { Router } from '@angular/router';
import { Location } from '@angular/common';
import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalCustomNavigationClient } from '@azure/msal-angular';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit, OnDestroy {
constructor(
@Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,
private authService: MsalService,
private msalBroadcastService: MsalBroadcastService,
private router: Router,
private location: Location
) {
const customNavigationClient = new MsalCustomNavigationClient(this.authService, this.router, this.location);
this.authService.instance.setNavigationClient(customNavigationClient);
}
ngOnInit(): void {
// Additional code
}
}