Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Externe tenants (meer informatie)
In deze zelfstudie leert u hoe u een Angular-app met één pagina bouwt waarmee gebruikers worden geregistreerd met behulp van de JavaScript SDK van systeemeigen verificatie.
In deze handleiding leert u:
- Een Angular Next.js-project maken.
- Voeg er MSAL JS SDK aan toe.
- Ui-onderdelen van de app toevoegen.
- Stel het project in om gebruikers te registreren.
Vereiste voorwaarden
- Voltooi de stappen in quickstart: Gebruikers aanmelden in een Angular-app met één pagina met behulp van de JavaScript SDK voor systeemeigen verificatie. In deze quickstart ziet u hoe u een voorbeeldcodevoorbeeld van Angular uitvoert.
- Voer de stappen uit in CORS-proxyserver instellen om CORS-headers te beheren voor systeemeigen verificatie.
- Visual Studio Code of een andere code-editor.
- Node.js.
- Angular CLI.
Een React-project maken en afhankelijkheden installeren
Voer op een locatie naar keuze op uw computer de volgende opdrachten uit om een nieuw Angular-project te maken met de naam reactspa, navigeer naar de projectmap en installeer vervolgens pakketten:
ng new angularspa
cd angularspa
Nadat u de opdrachten hebt uitgevoerd, moet u een app met de volgende structuur hebben:
angularspa/
└──node_modules/
└──...
└──public/
└──...
└──src/
└──app/
└──app.component.html
└──app.component.scss
└──app.component.ts
└──app.modules.ts
└──app.config.ts
└──app.routes.ts
└──index.html
└──main.ts
└──style.scss
└──angular.json
└──package-lock.json
└──package.json
└──README.md
└──tsconfig.app.json
└──tsconfig.json
└──tsconfig.spec.json
JavaScript SDK toevoegen aan uw project
Als u de JavaScript SDK voor systeemeigen verificatie in uw app wilt gebruiken, gebruikt u de terminal om deze te installeren met behulp van de volgende opdracht:
npm install @azure/msal-browser
De systeemeigen verificatiemogelijkheden maken deel uit van de azure-msal-browser bibliotheek. Als u systeemeigen verificatiefuncties wilt gebruiken, importeert u uit @azure/msal-browser/custom-auth. Voorbeeld:
import CustomAuthPublicClientApplication from "@azure/msal-browser/custom-auth";
Clientconfiguratie toevoegen
In deze sectie definieert u een configuratie voor een openbare clienttoepassing voor systeemeigen verificatie, zodat deze kan communiceren met de interface van de SDK. Dit doet u als volgt:
Maak een bestand met de naam src/app/config/auth-config.ts en voeg vervolgens de volgende code toe:
export const customAuthConfig: CustomAuthConfiguration = { customAuth: { challengeTypes: ["password", "oob", "redirect"], authApiProxyUrl: "http://localhost:3001/api", }, auth: { clientId: "Enter_the_Application_Id_Here", authority: "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com", redirectUri: "/", postLogoutRedirectUri: "/", navigateToLoginRequestUrl: false, }, cache: { cacheLocation: "sessionStorage", }, system: { loggerOptions: { loggerCallback: (level: LogLevel, message: string, containsPii: boolean) => { if (containsPii) { return; } switch (level) { case LogLevel.Error: console.error(message); return; case LogLevel.Info: console.info(message); return; case LogLevel.Verbose: console.debug(message); return; case LogLevel.Warning: console.warn(message); return; } }, }, }, };Zoek in de code de tijdelijke aanduiding:
Enter_the_Application_Id_Herevervang deze vervolgens door de toepassings-id (client) van de app die u eerder hebt geregistreerd.Enter_the_Tenant_Subdomain_Herevervang dit vervolgens door het tenantsubdomein in uw Microsoft Entra-beheercentrum. Als uw primaire tenantdomein bijvoorbeeld iscontoso.onmicrosoft.com, gebruikt ucontoso. Indien u uw tenantnaam niet hebt, leer dan hoe u de details van uw tenant kunt lezen.
Maak een bestand met de naam src/app/services/auth.service.ts en voeg vervolgens de volgende code toe:
import { Injectable } from '@angular/core'; import { CustomAuthPublicClientApplication, ICustomAuthPublicClientApplication } from '@azure/msal-browser/custom-auth'; import { customAuthConfig } from '../config/auth-config'; @Injectable({ providedIn: 'root' }) export class AuthService { private authClientPromise: Promise<ICustomAuthPublicClientApplication>; private authClient: ICustomAuthPublicClientApplication | null = null; constructor() { this.authClientPromise = this.init(); } private async init(): Promise<ICustomAuthPublicClientApplication> { this.authClient = await CustomAuthPublicClientApplication.create(customAuthConfig); return this.authClient; } getClient(): Promise<ICustomAuthPublicClientApplication> { return this.authClientPromise; } }
Een registratieonderdeel maken
Maak een map met de naam /app/components.
Gebruik Angular CLI om een nieuw onderdeel te genereren voor de registratiepagina in de map onderdelen door de volgende opdracht uit te voeren:
cd components ng generate component sign-upOpen sign-up/sign-up.component.ts en vervang de inhoud met de inhoud van sign-up.component
Open het aanmeldings-/sign-up.component.html-bestand en voeg de code toe aan het HTML-bestand.
De volgende logica in het sign-up.component.ts-bestand bepaalt wat de gebruiker moet doen na het starten van het registratieproces. Afhankelijk van het resultaat wordt het wachtwoordformulier of het verificatiecodeformulier in sign-up.component.html weergegeven, zodat de gebruiker kan doorgaan met de registratiestroom:
const attributes: UserAccountAttributes = { givenName: this.firstName, surname: this.lastName, jobTitle: this.jobTitle, city: this.city, country: this.country, }; const result = await client.signUp({ username: this.email, attributes, }); if (result.isPasswordRequired()) { this.showPassword = true; this.showCode = false; } else if (result.isCodeRequired()) { this.showPassword = false; this.showCode = true; }De instantiemethode
signUp()van de SDK start de registratiestroom.Als u wilt dat de gebruiker de aanmeldingsstroom onmiddellijk start nadat de registratie is voltooid, gebruikt u dit codefragment:
<div *ngIf="isSignedUp"> <p>The user has been signed up, please click <a href="/sign-in">here</a> to sign in.</p> </div>
Open het bestand src/app/app.component.scss en voeg vervolgens het volgende stijlenbestand toe.
Automatisch aanmelden na aanmelding (optioneel)
U kunt uw gebruikers automatisch aanmelden na een geslaagde registratie zonder een nieuwe aanmeldingsstroom te starten. Gebruik hiervoor het volgende codefragment. Bekijk een volledig voorbeeld in sign-up/sign-up.component.ts:
if (this.signUpState instanceof SignUpCompletedState) {
const result = await this.signUpState.signIn();
if (result.isFailed()) {
this.error = result.error?.errorData?.errorDescription || "An error occurred during auto sign-in";
}
if (result.isCompleted()) {
this.userData = result.data;
this.signUpState = result.state;
this.isSignedUp = true;
this.showCode = false;
this.showPassword = false;
}
}
Wanneer u een gebruiker automatisch aanmeldt, gebruikt u het volgende codefragment in uw aanmeldings-/sign-up.component.htmlHTML-bestand .
<div *ngIf="userData && !isSignedIn">
<p>Signed up complete, and signed in as {{ userData?.getAccount()?.username }}</p>
</div>
<div *ngIf="isSignedUp && !userData">
<p>Sign up completed! Signing you in automatically...</p>
</div>
App-routering bijwerken
Open het bestand src/app/app.route.ts en voeg vervolgens de route toe voor het registratieonderdeel:
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { SignUpComponent } from './components/sign-up/sign-up.component'; import { AuthService } from './services/auth.service'; import { AppComponent } from './app.component'; export const routes: Routes = [ { path: 'sign-up', component: SignUpComponent }, ]; @NgModule({ imports: [ RouterModule.forRoot(routes), SignUpComponent, ], providers: [AuthService], bootstrap: [AppComponent] }) export class AppRoutingModule { }
De registratiestroom testen
Voer de volgende opdracht uit in de terminal om de CORS-proxyserver te starten:
npm run corsVoer de volgende opdracht uit in uw terminal om uw toepassing te starten:
npm startOpen een webbrowser en navigeer naar
http://localhost:4200/sign-up. Er wordt een registratieformulier weergegeven.Als u zich wilt registreren voor een account, voert u uw gegevens in, selecteert u de knop Doorgaan en volgt u de aanwijzingen.