Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к:
Клиенты рабочей силы
Внешние клиенты (дополнительные сведения)
Это руководство является частью 2 серии, демонстрирующей создание одностраничного приложения Angular (SPA) и добавление проверки подлинности с помощью платформы удостоверений Майкрософт. В части 1 этой серии вы создали SPA Angular и добавили начальные конфигурации.
Изучив это руководство, вы:
- Добавить функции входа и выхода
Предварительные условия
- Завершение предварительных требований и шагов в руководстве. Создание одностраничного приложения Angular
Добавление функций входа и выхода в приложение
В этом разделе вы добавите компоненты для поддержки функций входа и выхода в приложении Angular. Эти компоненты позволяют пользователям проходить проверку подлинности и управлять сеансами. Вы добавите маршрутизацию в приложение, чтобы направлять пользователей в соответствующие компоненты на основе их статуса аутентификации.
Чтобы включить функции входа и выхода в приложение Angular, выполните следующие действия.
Откройте файл
src/app/app.component.htmlи замените его содержимое следующим кодом.<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>Код реализует панель навигации в приложении Angular. Он динамически отображает кнопки входа и выхода на основе состояния проверки подлинности пользователей и включает кнопку "Профиль просмотра" для пользователей, вошедшего в систему, повышая пользовательский интерфейс приложения. Методы
login()иlogout()вsrc/app/app.component.tsвызываются при выборе кнопок.Откройте файл
src/app/app-routing.module.tsи замените его содержимое следующим кодом.// 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 { }Фрагмент кода настраивает маршрутизацию в приложении Angular, устанавливая пути для компонентов Profile и Home . Используется
MsalGuardдля принудительной проверки подлинности на маршруте Профиль, а все пути, не совпадающие, перенаправляются на компонент Home.Откройте файл
src/app/home/home.component.tsи замените его содержимое следующим кодом.// 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); }); } }Код настраивает компонент Angular под названием
HomeComponent, который интегрируется с библиотекой проверки подлинности Microsoft (MSAL). В перехватчике жизненного циклаngOnInitкомпонент подписывается на наблюдаемый объектmsalSubject$изMsalBroadcastService, фильтруя события успешного входа. При возникновении события входа он извлекает результат проверки подлинности и задает активную учетную запись в приложенииMsalServiceдля управления сеансами пользователей.Откройте файл
src/app/home/home.component.htmlи замените его содержимое следующим кодом.<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>Код приветствует пользователей в приложении и предлагает им просмотреть данные Microsoft Graph, щелкнув ссылку Просмотр профиля.
Откройте файл
src/main.tsи замените его содержимое следующим кодом.import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err));Фрагмент кода импортирует
platformBrowserDynamicиз динамического модуля платформы Angular для браузера иAppModuleиз файла модуля приложения. Затем он используетplatformBrowserDynamic()для инициализацииAppModule, запуская приложение Angular. Все ошибки, возникающие во время процесса начальной загрузки, перехватываются и регистрируются в консоли.Откройте файл
src/index.htmlи замените его содержимое следующим кодом.<!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>Фрагмент кода определяет html5-документ с английским языком и кодировкой символов UTF-8. Он устанавливает заголовок "MSAL For JavaScript - Angular SPA". Основная часть включает
<app-root>компонент в качестве основной точки входа и<app-redirect>компонент для функций перенаправления.Откройте файл
src/styles.cssи замените его содержимое следующим кодом.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 стилизует веб-страницу, устанавливая стек современных шрифтов без засечек, удаляя стандартные отступы и применяя сглаживание шрифтов для улучшения читаемости. Он центрирует текст и добавляет заполнение в
.appклассы.titleи.profileклассы, в то время как.profileButtonкласс использует flexbox для центра его элементов.