Czy dopuszczalne jest stosowanie GenerateChangePhoneNumberTokenAsync (), aby potwierdzić e-mail zamiast numeru telefonu?

0

Pytanie

Tworzę API i aplikacja mobilna na Xamarin. Nie chcę potwierdzić numer telefonu, tak, jak muszę użyć Twilio lub innych dostawców SMS, zamiast tego chcę potwierdzić e-mail. W tym samym czasie nie chcę tworzyć token e-mail, który zostanie wysłany do użytkownika, powołując się dla depresji, tak jak API nie jest MVC i nie będzie miał żadnych widoków.

Zamiast tego chcę, aby użytkownik e-mail został wysłany 6-cyfrowy kod, a następnie stworzę punkt końcowy w API, gdzie użytkownik wysyła ten kod za pośrednictwem aplikacji mobilnej, aby potwierdzić e-mail. Na przykład:

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

To tworzy kod, należy pamiętać, że przekazuję użytkownikom wiadomości e-mail, a nie numer telefonu. Ten kod teraz przesyłane do użytkownika w wiadomości e-mail, a użytkownik wprowadza go w aplikacji mobilnej. Następnie:

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

To potwierdza poprawność kodu. Wartość logiczna, uzyskana w wyniku tego, ja potem będę używać, aby zainstalować ręcznie EmailConfirmed w bazie danych, aby true

To działa. Ale czy byłoby to do przyjęcia? Czy istnieje jakiś powód, dla którego nie powinienem tego robić?

1

Najlepsza odpowiedź

2

Jednym z powodów, dla której to pojawia, polega na tym, że, choć jest to tylko kod weryfikacyjny, semantycznie funkcja jest przeznaczona dla telefonów kodów, więc w przyszłości mogą być niektóre "błędy", jeśli będziesz używać go do wiadomości e-mail.

Po przeczytaniu źródło, można zobaczyć, że realizacja obecnie opiera się na RFC 6238: Łódź jednorazowego hasła na podstawie czasu, który jest również dość powszechne do korzystania z poczty e-mail.

W ten sposób, wiesz, że przy użyciu tej samej metody jest tak samo bezpieczne, jak i specyfikacja RFC 6238, zrealizowany w ASP.NET Rdzeń tożsamości.

Nie można po prostu użyć klasy, bo modyfikator dostępu internalale, po tej samej idei, istnieją biblioteki OTP dla .NET, oparte na tej samej zasadzie.

Użycie jednego z nich, moim zdaniem, gwarantowałoby, że realizacja będzie maksymalnie czysty i uniwersalny, ale dla szybkiego i brudnego rozwiązania z bieżącą wersją ASP.NET Rdzeń tożsamości, bym nie widział problemu z tym podejściem.

2021-12-04 16:42:57

W innych językach

Ta strona jest w innych językach

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