Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
Tenant esterni (ulteriori informazioni)
Questa esercitazione illustra come abilitare la reimpostazione della password nell'app a pagina singola Angular usando JavaScript SDK per l'autenticazione nativa. La reimpostazione della password è disponibile per gli account utente che usano la posta elettronica con il flusso di autenticazione della password.
In questa esercitazione, farai:
- Aggiornare l'app Angular per reimpostare la password dell'utente.
- Testare il flusso di reimpostazione della password
Prerequisiti
- Completare i passaggi descritti in Esercitazione: Iscrivere gli utenti all'app a pagina singola Angular usando JavaScript SDK per l'autenticazione nativa.
- Abilitare la reimpostazione della password self-service (SSPR) per gli utenti dei clienti nel tenant esterno. La reimpostazione della password self-service (SSPR) è disponibile per gli utenti dei clienti per le app che usano la posta elettronica con il flusso di autenticazione della password.
Creare il componente di reimpostazione della password
Usare l'interfaccia della riga di comando di Angular per generare un nuovo componente per la reimpostazione della password all'interno della cartella dei componenti eseguendo il comando seguente:
cd components ng generate component reset-passwordAprire il file reset-password/reset-password.component.ts e sostituirlo con il contenuto di reset-password.component.ts
Aprire il file reset-password/reset-password.component.html e aggiungere il contenuto da reset-password.component.html.
La logica seguente in reset-password.component.ts determina il passaggio successivo dopo l'operazione di reimpostazione iniziale della password. A seconda del risultato, viene visualizzato il modulo di immissione del codice in reset-password.component.html per continuare il processo di reimpostazione della password:
const result = await client.resetPassword({ username: this.email }); if (result.isCodeRequired()) { this.showCode = true; this.isReset = false; this.showNewPassword = false; }- Il metodo di istanza dell'SDK, resetPassword() avvia il flusso di reimpostazione della password.
- Nel file reset-password.component.html :
<form *ngIf="showCode" (ngSubmit)="submitCode()"> <input type="text" [(ngModel)]="code" name="code" placeholder="OTP Code" required /> <button type="button" (click)="submitCode()" [disabled]="loading">{{ loading ? 'Verifying...' : 'Verify Code' }}</button> </form>Dopo
submitCode()che è stato richiamato correttamente, il risultato determina il passaggio successivo: se è necessaria la password, viene visualizzato il nuovo modulo password per consentire all'utente di continuare il processo di reimpostazione della password.if (result.isPasswordRequired()) { this.showCode = false; this.showNewPassword = true; this.isReset = false; this.resetState = result.state; }Nel file reset-password.component.html :
<form *ngIf="showNewPassword" (ngSubmit)="submitNewPassword()"> <input type="password" [(ngModel)]="newPassword" name="newPassword" placeholder="New Password" required /> <button type="button" (click)="submitNewPassword()" [disabled]="loading">{{ loading ? 'Submitting...' : 'Submit New Password' }}</button> </form>Se si vuole che l'utente avvii il flusso di accesso immediatamente dopo il completamento della reimpostazione della password, usare questo frammento di codice:
<div *ngIf="isReset"> <p>The password has been reset, please click <a href="/sign-in">here</a> to sign in.</p> </div>
Accesso automatico dopo la reimpostazione della password (facoltativo)
È possibile accedere automaticamente agli utenti dopo la reimpostazione della password senza avviare un nuovo flusso di accesso. A tale scopo, usare il frammento di codice seguente. Vedere un esempio completo in reset-password.component.ts:
if (this.resetState instanceof ResetPasswordCompletedState) {
const result = await this.resetState.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.resetState = result.state;
this.isReset = true;
this.showCode = false;
this.showNewPassword = false;
}
}
Quando si accede automaticamente a un utente, usare il seguente frammento di codice nel reset-password.component.html:
<div *ngIf="userData && !isSignedIn">
<p>Password reset completed, and signed in as {{ userData?.getAccount()?.username }}</p>
</div>
<div *ngIf="isReset && !userData">
<p>Password reset completed! Signing you in automatically...</p>
</div>
Aggiornare il modulo di routing
Aprire il file src/app/app.routes.ts , quindi aggiungere la route per il componente di reimpostazione della password:
import { ResetPasswordComponent } from './reset-password/reset-password.component';
const routes: Routes = [
{ path: 'reset-password', component: ResetPasswordComponent },
...
];
Testare la funzionalità di reimpostazione della password
Per avviare il server proxy CORS, eseguire il comando seguente nel terminale:
npm run corsPer avviare l'applicazione, eseguire il comando seguente nel terminale:
npm startAprire un Web browser e passare a
http://localhost:4200/reset-password. Viene visualizzato un modulo di iscrizione.Per reimpostare la password per un account utente esistente, immettere i dettagli, selezionare il pulsante Continua e quindi seguire le istruzioni.
Configura poweredByHeader: false in next.config.js
In Next.jsl'intestazione x-powered-by è inclusa per impostazione predefinita nelle risposte HTTP per indicare che l'applicazione è basata su Next.js. Tuttavia, per ragioni di sicurezza o personalizzazione, potresti desiderare di rimuovere o modificare questa intestazione.
const nextConfig: NextConfig = { poweredByHeader: false, /* other config options here */ };