它是可以接受的使用GenerateChangePhoneNumberTokenAsync()确认电子邮件,而不是电话号码吗?

0

的问题

我要建一个API和移动应用程序在中. 我不想要确认的电话号码作为我不得不使用,或其他短信提供者,而不是的,我想确认一个电子邮件。 在同一时间,我不想创建一个电子邮件令牌被发送到用户的链接的点击,作为API不是视而不会有任何意见。

相反,我想要一的6位数代码可通过电子邮件发送给用户,然后我将创建一个终点在API用户将提交码的通过移动应用程序,用于确认的电子邮件。 例如:

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

这造成的代码,通知我通过用户的电子邮件,而不是电话号码。 这个代码现在通过电子邮件发送给用户,以及用户进入这个的移动应用程序。 然后:

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

这确认代码是正确的。 布尔产生的,从这个然后,我会用手动设置 EmailConfirmed 在数据库来 true

它的工作。 它是可以接受的吗? 没有任何理由为什么我不应该这样做?

1

最好的答案

2

其中一个原因是持久性有机污染物的是,虽然这只是一个验证码,从语义上的功能是,对电话代码,使它可以有一些"问题"介绍了在未来如果你要用它为电子邮件。

通过读取 的来源 可以看到,执行目前正根据 RFC6238:基于时间的一次性密码算法,它是通用的足够的电子邮件的使用。

因此,你知道,通过使用相同的方法,这是安全的,因为RFC6238说明书作为实现在ASP.NET 身份核心。

你不能只是使用类,因为访问的修改是 internal但下面的相同理念,还有 检察官办公室图书馆 。净基于同样的原则。

使用 他们中的一个 将会确保执行是如清洁和一般尽可能在我的意见,但对于快速和肮脏的解决方案当前版本的ASP.NET 身份核心,我会看见没有问题的方法。

2021-12-04 16:42:57

其他语言

此页面有其他语言版本

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