Este acceptabil să utilizați GenerateChangePhoneNumberTokenAsync() pentru a confirma un e-mail în loc de numărul de telefon?

0

Problema

Eu sunt construirea unui API și o APLICAȚIE Mobilă în Xamarin. Nu vreau pentru a confirma numărul de telefon ca mi-ar trebui să utilizați Twilio sau a altor furnizori de SMS-uri, în schimb, vreau să confirm un e-mail. În același timp, nu doriți să creați un e-mail semn de a fi trimis utilizatorului cu un link să faceți clic, ca API nu este MVC și nu va avea nici o vedere.

În schimb, vreau un cod de 6 cifre pentru a fi trimis la utilizator și apoi voi crea un efect în API în cazul în care utilizatorul va trimite codul prin intermediul APLICAȚIEI mobile, pentru a confirma e-mail. De exemplu:

var code = await _userManager.GenerateChangePhoneNumberTokenAsync(newUser, newUser.Email);

Acest lucru creează codul, observa eu sunt in trecere utilizatorii de e-mail, mai degrabă decât numărul de telefon. Acest cod este acum trimis la utilizator, iar utilizatorul introduce acest lucru în APLICAȚIA pentru mobil. Apoi:

var confirmed = await _userManager.VerifyChangePhoneNumberTokenAsync(newUser, code, newUser.Email);

Acest lucru confirmă faptul că acest cod este corect. Boolean care rezultă din aceasta, voi folosi apoi pentru a seta manual EmailConfirmed în DB a true

Acesta funcționează. Este acceptabil totuși? Nu există nici un motiv de ce nu ar trebui să fac asta?

1

Cel mai bun răspuns

2

Un motiv pentru care apare este că, chiar dacă e doar un cod de validare, semantic funcția este pentru codurile de telefon, așa că ar putea avea unele "chestii" introduse în viitor dacă îl utilizați pentru e-mail-uri.

Citind sursa , puteți vedea că punerea în aplicare este în prezent bazate pe RFC 6238: Timp, pe Baza de Parola One-Time Algoritm, care este suficient de generic pentru e-mail de utilizare, precum și.

Astfel, știi că folosind aceeași metodă, este la fel de sigur ca RFC 6238 specificație fi puse în aplicare în ASP.NET Identitatea de Bază.

Nu poți folosi la clasă pentru că modificatorul de acces este internaldar urmand aceeasi idee, există OTP Biblioteci pentru .NET bazează pe același principiu.

Folosind unul dintre ei ar a se asigura că punerea în aplicare este la fel de curat și generic ca posibil, în opinia mea, dar pentru rapid și murdar soluție cu versiunea curentă de ASP.NET Identitatea de Bază, aș vedea nici probleme cu abordarea.

2021-12-04 16:42:57

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................