gpt4 book ai didi

asp.net-core - 使用 GenerateChangePhoneNumberTokenAsync() 来确认电子邮件而不是电话号码是否可以接受?

转载 作者:行者123 更新时间:2023-12-05 04:41:26 24 4
gpt4 key购买 nike

我正在 Xamarin 中构建 API 和移动应用程序。我不想确认电话号码,因为我必须使用 Twilio 或其他 SMS 提供商,相反,我想确认一封电子邮件。同时,我不想创建一个电子邮件 token 来发送给用户点击链接,因为 API 不是 MVC,不会有任何 View 。

相反,我希望通过电子邮件将 6 位代码发送给用户,然后我将在 API 中创建一个端点,用户将在其中通过移动应用程序提交该代码,以确认电子邮件。例如:

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

这会创建代码,请注意我传递的是用户电子邮件而不是电话号码。此代码现在通过电子邮件发送给用户,用户在移动应用程序中输入此代码。然后:

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

这确认代码是正确的。由此产生的 bool 值将用于手动将数据库中的 EmailConfirmed 设置为 true

它有效。可以接受吗?我有什么理由不应该这样做吗?

最佳答案

弹出的一个原因是,尽管它只是一个验证码,但从语义上讲,该功能用于电话代码,因此如果您将其用于电子邮件,将来可能会引入一些“陷阱”。

通过阅读the source您可以看到该实现当前基于 RFC 6238 : 基于时间的一次性密码算法,对于电子邮件的使用也足够通用。

因此,您知道通过使用相同的方法,它与在 ASP.NET Identity Core 中实现的 RFC 6238 规范一样安全。

你不能只使用类,因为访问修饰符是internal,但遵循同样的想法,有OTP Libraries基于相同原则的 .NET。

使用 one of them在我看来,这将确保实现尽可能干净和通用,但对于当前版本的 ASP.NET Identity Core 的快速而肮脏的解决方案,我认为该方法没有问题。

关于asp.net-core - 使用 GenerateChangePhoneNumberTokenAsync() 来确认电子邮件而不是电话号码是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70087691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com