Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
için geçerlidir: beyaz onay işareti simgesine sahip yeşil daire İş gücü kiracıları beyaz onay işareti simgesiyle yeşil daire
(daha fazla bilgi)
Bu öğretici, Angular tek sayfalı uygulama (SPA) oluşturmayı ve Microsoft kimlik platformunu kullanarak kimlik doğrulaması eklemeyi gösteren serinin 2. bölümüdür. bu serininBölüm 1'de bir Angular SPA oluşturdunuz ve ilk yapılandırmaları eklediniz.
Bu öğreticide şunları yapacaksınız:
- Oturum açma ve oturum kapatma ekleme
Önkoşullar
- Önkoşulların ve adımların tamamlanması Öğreticisi'nde: Angular tek sayfalı uygulama oluşturma
Uygulamanıza oturum açma ve oturum kapatma işlevi ekleme
Bu bölümde, Angular uygulamanızda oturum açma ve oturum kapatma işlevlerini desteklemek için bileşenler ekleyeceksiniz. Bu bileşenler kullanıcıların oturumlarının kimliğini doğrulamasını ve yönetmesini sağlar. Kullanıcıları kimlik doğrulama durumlarına göre uygun bileşenlere yönlendirmek için uygulamaya yönlendirme ekleyeceksiniz.
Angular uygulamanızda oturum açma ve oturum kapatma işlevlerini etkinleştirmek için şu adımları izleyin:
src/app/app.component.html
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.<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>
Kod, Angular uygulamasında bir gezinti çubuğu uygular. Kullanıcı kimlik doğrulaması durumuna göre Oturum Aç ve Oturumu Kapat düğmelerini dinamik olarak görüntüler ve oturum açmış kullanıcılar için bir Profili Görüntüle düğmesi içerir ve uygulamanın kullanıcı arabirimini geliştirir.
login()
içindekilogout()
vesrc/app/app.component.ts
yöntemleri, düğmeler seçildiğinde çağrılır.src/app/app-routing.module.ts
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.// 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 { }
Kod parçacığı, Profil ve Ana Sayfa bileşenleri için yollar oluşturarak Angular uygulamasında yönlendirmeyi yapılandırıyor.
MsalGuard
, Profil yolunda kimlik doğrulamayı zorunlu kılar ve tüm eşleşmeyen yollar Home bileşenine yönlendirilir.src/app/home/home.component.ts
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.// 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); }); } }
Kod, Microsoft Kimlik Doğrulama Kitaplığı (MSAL) ile tümleşen adlı
HomeComponent
bir Angular bileşeni ayarlar. Yaşam döngüsü kancasıngOnInit
içinde, bileşenmsalSubject$
öğesindekiMsalBroadcastService
gözlemlenebilire abone olur ve oturum açma başarı olaylarını filtreler. Bir oturum açma olayı gerçekleştiğinde, kimlik doğrulama sonucunu alır ve içindeMsalService
etkin hesabı ayarlar ve uygulamanın kullanıcı oturumlarını yönetmesini sağlar.src/app/home/home.component.html
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.<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>
Kod, kullanıcılara uygulamaya hoş geldiniz diyerek Profili Görüntüle bağlantısına tıklayarak Microsoft Graph verilerini görüntülemelerini ister.
src/main.ts
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));
Kod parçacığı, Angular'ın platform tarayıcısı dinamik modülünden
platformBrowserDynamic
ve uygulamanın modül dosyasındanAppModule
içeri aktarır. Ardından, Angular uygulamasını başlatmak içinplatformBrowserDynamic()
kullanarakAppModule
önyükler. Önyükleme işlemi sırasında oluşan hatalar yakalanıp konsola kaydedilir.src/index.html
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.<!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>
Kod parçacığı, dil olarak İngilizce ve UTF-8 karakter kodlaması içeren bir HTML5 belgesi tanımlar. Başlığı "JavaScript için MSAL - Angular SPA" olarak ayarlar. Gövde, ana giriş noktası olarak
<app-root>
bileşenini ve yeniden yönlendirme işlevleri için<app-redirect>
bileşenini içerir.src/styles.css
Dosyasını açın ve içeriğini aşağıdaki kodla değiştirin.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; }
CSS kodu, gövde yazı tipini modern bir sans-serif yığınına ayarlayarak, varsayılan kenar boşluklarını kaldırarak ve gelişmiş okunabilirlik için yazı tipi düzeltme uygulayarak web sayfasını stiller. Metni ve
.app
,.title
ve.profile
sınıflarındaki nesneleri ortalar ve bu sınıflara dolgular eklerken,.profileButton
sınıfı öğelerini ortalamak için flexbox kullanır.
Sonraki adım
Öğreticisi: Öğretici: Angular SPA ile kullanıcı verilerini ayıklama