Est-il acceptable d'utiliser GenerateChangePhoneNumberTokenAsync() pour confirmer un e-mail au lieu d'un numéro de téléphone?

0

La question

Je suis en train de construire une API et une APPLICATION Mobile dans Xamarin. Je ne veux pas confirmer le numéro de téléphone que je dois utiliser Twilio ou d'autres fournisseurs de SMS, au lieu de cela, je tiens à confirmer un e-mail. En même temps, je ne veux pas créer un e-mail jeton pour être envoyé à l'utilisateur avec un lien à cliquer, que l'API n'est pas MVC et n'aura pas de point de vue.

Au lieu de cela, je veux un code à 6 chiffres pour être envoyées par courriel à l'utilisateur et ensuite je vais créer un point de terminaison dans l'API, où l'utilisateur va soumettre ce code via l'APPLICATION mobile, afin de confirmer l'e-mail. Par exemple:

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

Cela crée le code, notez que je suis les utilisateurs de passage e-mail plutôt que le numéro de téléphone. Ce code est maintenant envoyé à l'utilisateur, et l'utilisateur saisit dans l'APPLICATION mobile. Alors:

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

Cela confirme que le code est correct. Le booléen résultant de cela, je vais l'utiliser pour définir manuellement EmailConfirmed dans la DB pour true

Elle fonctionne. Est-il acceptable si? Est-il une raison pourquoi je ne devrais pas faire cela?

1

La meilleure réponse

2

L'une des raisons qui apparaît, c'est que même si c'est juste un code de validation, du point de vue sémantique, la fonction est pour le téléphone de codes, de sorte qu'il pourrait avoir quelques "pièges" mis en place dans le futur si vous l'utilisez pour les e-mails.

Par la lecture de la source que vous pouvez voir que la mise en œuvre est actuellement basé sur la RFC 6238: Moment unique Basée sur l'Algorithme de Mot de passe, ce qui est suffisamment générique pour l'utilisation de la messagerie ainsi.

Ainsi, vous savez qu'en utilisant la même méthode, c'est aussi sûr que la RFC 6238 spécification mises en œuvre dans la ASP.NET l'Identité de Base.

Vous ne pouvez pas utiliser la classe parce que le modificateur d'accès est internalmais suivant la même idée, il y a OTP Bibliothèques pour .NET basé sur le même principe.

À l'aide de l'un d'eux serait de s'assurer que la mise en œuvre est aussi propre et générique que possible, à mon avis, mais pour le rapide et sale de la solution avec la version actuelle de ASP.NET l'Identité de Base, je vois pas de problèmes avec cette approche.

2021-12-04 16:42:57

Dans d'autres langues

Cette page est dans d'autres langues

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