Approccio da utilizzare per modificare l'indirizzo e-mail dell'utente nell'applicazione?

4

Come dice il titolo, se l'utente desidera modificare il suo indirizzo e-mail nell'applicazione, in termini di programmazione, quale approccio (processo) utilizzare? Dove memorizzi il nuovo indirizzo email finché l'utente non lo confermerà?

    
posta msoa 19.04.2013 - 12:43
fonte

3 risposte

2

Se non si desidera apportare modifiche all'archiviazione dei dati dell'utente (ad esempio, aggiungere un altro campo alla tabella del database), è possibile includere il nuovo indirizzo email nel collegamento di risposta di conferma come parametro. Per motivi di sicurezza, potresti anche inviare un avviso all'indirizzo corrente, "Ehi, stai cambiando il tuo indirizzo email in" qualunque cosa ", quindi è stata inviata una conferma lì ...".

La tua applicazione dovrà considerare una conferma della modifica dell'indirizzo email un po 'diversa dalla nuova procedura di conferma dell'account aggiornando l'indirizzo email. Forse il vecchio è registrato?

Se l'utente sceglie di non confermare la tua app non deve fare nulla.

Non so quanto sia critico un indirizzo email per l'applicazione (dipende molto dalle comunicazioni o è solo per scopi di marketing), ma potresti voler considerare di mantenerne più di uno. Ci può sempre essere un indirizzo predefinito / principale. I vecchi indirizzi sono semplicemente disabilitati in caso di confusione.

    
risposta data 19.04.2013 - 14:22
fonte
1

Penso che l'approccio migliore sarebbe creare una nuova tabella chiamata email_resets , in cui avrai alcuni campi:

id | new_email | old_email | hash | date_added

Quindi invia all'utente un link email di ripristino sul vecchio indirizzo email. Informa l'utente che la sua email sarà cambiata in [email protected] , quindi quando farà clic sul link, controllerà l'hash, l'email e l'ora in cui è stata effettuata la richiesta, quindi potrai aggiornare il tuo tabella utente principale ed eliminare la voce di posta elettronica di ripristino. (puoi sostituire old_email con user_id e forse rimuovere completamente il campo id )

I vantaggi sarebbero i seguenti:

  • nessuna modifica alla tabella principale (né la struttura del database, né i valori memorizzati)
  • hai il pieno controllo del limite di tempo (es. il ripristino del collegamento email sarà disponibile solo per X ore) e puoi fare un cron job per ripulire il tavolo.
  • poca memoria aggiuntiva necessaria - se le richieste di reimpostazione dell'email vengono eliminate ogni poche ore / giorni

PS: è necessario anche un hash generato in modo casuale (questo è il motivo alla base del campo hash ), oltre al tempo di scadenza per assicurarsi che queste richieste non possano essere falsificate.

    
risposta data 16.09.2013 - 17:29
fonte
0

l'ID e-mail è l'ID di accesso? è usato come riferimento altrove? la riga utente ha una chiave primaria diversa?

Se progettato bene, la tabella ha una chiave primaria Db / separata (e l'id email non è una chiave esterna altrove). Quindi è possibile mantenere nuovi indirizzi e-mail in una tabella diversa finché non vengono verificati insieme alla chiave a cui appartiene. anche come convalida assicurati che lo stesso ID email non venga utilizzato da altri utenti né sia sottoposto a convalida da parte di altri utenti.

una volta convalidato, aggiorna alla tabella principale, rimuovi dalla tabella temporanea e se puoi mantenere la vecchia email in una tabella di controllo

    
risposta data 19.04.2013 - 13:10
fonte

Leggi altre domande sui tag