Best practice per il salvataggio dei dati utente quando si utilizza un provider di identità come AWS Cognito

1

Quindi nella mia mente, la solita tabella degli utenti che siamo abituati ad avere, si dividerà in due:

  • qualsiasi dato si trova all'interno del provider di identità
  • i dati specifici del dominio (user.facialHairStyle) rimarranno ancora nella tabella utente. Una differenza è che mancheranno le proprietà regolari coperte dal provider di identità: nome, sesso, posta ...

Devi essere onesto. Sono lontano da come questo. Primo esempio stupido che mi viene in mente: Registri utente, l'app gestisce ciò creando una voce utente con dati specifici del dominio con id della voce del pool di identità. Cosa succede se la creazione della voce dell'utente non riesce? Devo inventare procedure di rollback? Annullo la registrazione dell'utente?

    
posta Birowsky 25.10.2017 - 20:17
fonte

2 risposte

1

L'ho già fatto, in cui i dati di un servizio di terze parti devono essere sincronizzati con i dati archiviati nel mio database SQL interno.

Il modo migliore che ho potuto ottenere è stato avviare una transazione di database locale, inserire provvisoriamente i dati locali, raggiungere il servizio di terze parti e creare i miei dati / inserirli, verificare la chiamata di servizio di terze parti completato con successo e ottenere qualsiasi ID di terze parti secondo necessità, quindi all'interno della stessa transazione di database locale aggiornare i dati richiesti, quindi e solo successivamente eseguire il commit della transazione del database.

Se il servizio di terze parti fallisce, è possibile eseguire il rollback della transazione e non si hanno dati locali a rischio. Se il commit fallisce, puoi eseguire manualmente il rollback della creazione del servizio di terze parti.

L'unico svantaggio è che se il servizio di terze parti è lento, hai il potenziale per transazioni di lunga durata che possono essere problematiche e portare a deadlock in casi specifici.

Ma nel complesso funziona abbastanza bene quando l'ho fatto.

    
risposta data 25.10.2017 - 21:26
fonte
0

Dato che hai bisogno di due operazioni per avere successo insieme, dovresti usare una transazione intorno a loro. Le transazioni non sono impegnate nella tabella finché non vengono contrassegnate come complete. Se una parte fallisce, nessuna delle modifiche verrà scritta sulla tabella. link

Se l'archivio dati non lo supporta, non iniziare la seconda transazione fino a quando la creazione dell'identità non ha avuto esito positivo.

    
risposta data 25.10.2017 - 20:57
fonte

Leggi altre domande sui tag