Utenti non autenticati
Facciamo una PUT
richiesta su un api/v1/account/password
endpoint e richiediamo un parametro con l'e-mail dell'account corrispondente per identificare l'account per il quale l'utente desidera reimpostare (aggiornare) la password:
PUT : /api/v1/account/password?email={email@example.com}
Nota: come @DougDomeny ha menzionato nel suo commento, passare l'e-mail come stringa di query nell'URL è un rischio per la sicurezza. I parametri GET non sono esposti durante l'uso https
(e dovresti sempre usare una https
connessione appropriata per tali richieste) ma ci sono altri rischi per la sicurezza coinvolti. Puoi leggere di più su questo argomento in questo post del blog qui .
Il passaggio dell'email nel corpo della richiesta sarebbe un'alternativa più sicura al passarlo come parametro GET:
PUT : /api/v1/account/password
Corpo della richiesta:
{
"email": "email@example.com"
}
La risposta ha un significato di risposta 202
accettata :
La richiesta è stata accettata per l'elaborazione, ma l'elaborazione non è stata completata. La richiesta potrebbe o meno essere eseguita alla fine, in quanto potrebbe non essere consentita quando l'elaborazione ha effettivamente luogo. Non è possibile inviare nuovamente un codice di stato da un'operazione asincrona come questa.
L'utente riceverà un'e-mail all'indirizzo email@example.com
e l'elaborazione della richiesta di aggiornamento dipende dalle azioni intraprese con il collegamento dall'e-mail.
https://example.com/password-reset?token=1234567890
L'apertura del collegamento da questa e-mail indirizzerà a un modulo di reimpostazione della password nell'applicazione front-end che utilizza il token di reimpostazione della password dal collegamento come input per un campo di input nascosto (il token fa parte del collegamento come stringa di query). Un altro campo di input consente all'utente di impostare una nuova password. Un secondo input per confermare la nuova password verrà utilizzato per la convalida sul front-end (per evitare errori di battitura).
Nota: nell'email potremmo anche menzionare che nel caso in cui l'utente non abbia inizializzato alcuna reimpostazione della password può ignorare l'email e continuare a utilizzare l'applicazione normalmente con la sua password attuale
Quando il modulo viene inviato con la nuova password e il token come input, avrà luogo il processo di reimpostazione della password. I dati del modulo verranno inviati PUT
nuovamente con una richiesta ma questa volta includendo il token e sostituiremo la password della risorsa con un nuovo valore:
PUT : /api/v1/account/password
Corpo della richiesta:
{
"token":"1234567890",
"new":"password"
}
La risposta sarà una risposta 204
senza contenuto
Il server ha soddisfatto la richiesta ma non ha bisogno di restituire un corpo dell'entità e potrebbe voler restituire le metainformazioni aggiornate. La risposta PU includere metainformazioni nuove o aggiornate sotto forma di intestazioni di entità, che se presenti DOVREBBERO essere associate alla variante richiesta.
Utenti autenticati
Per gli utenti autenticati che vogliono cambiare la propria password la PUT
richiesta può essere eseguita immediatamente senza l'email (l'account di cui stiamo aggiornando la password è noto al server). In tal caso il modulo presenterà due campi:
PUT : /api/v1/account/password
Corpo della richiesta:
{
"old":"password",
"new":"password"
}