【发布时间】:2017-12-10 22:16:50
【问题描述】:
我不知道如何在 asp.net core 1.1 中进行电话号码确认
身份服务配置包含需要确认的电子邮件和/或电话号码的明确选项。
可以通过以下方式完成:
services
.AddIdentity<User, Role>(options =>
{
options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = true;
});
电子邮件的验证非常简单,因为 UserManager 包含显式令牌生成器及其验证器:
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
可以通过以下方式验证生成的令牌:
var result = await _userManager.ConfirmEmailAsync(user, code);
如果令牌有效,上述行会将 user.EmailConfirmed 标志切换为 true。
现在的问题是,我没有看到类似的方法来生成电话验证令牌及其等效的验证方法(如果成功,则反过来应该将 user.PhoneNumberConfirmed 标志切换为 true)。
用户管理器包含很少的方法来更改用户电话:
_userManager.GenerateChangePhoneNumberTokenAsync();
和
_userManager.VerifyChangePhoneNumberTokenAsync();
但似乎这些方法不会切换 user.PhoneNumberConfirmed 标志。
我错过了什么吗?确认用户电话号码的正确方法是什么(换句话说,将 user.PhoneNumberConfirmed 设置为 true)?
【问题讨论】:
-
电话确认需要像 twilio 这样的外部服务通过发送短信来进行确认。我已经在我的项目中实现了这些东西github.com/joeaudette/cloudscribe
-
@JoeAudette 好吧,我对如何提供确认码不感兴趣,而是对如何正确验证它感兴趣。你能告诉我你在哪里做的吗?
-
如果您看到source code,唯一将PhoneNumberConfirmed 设置为true 的地方是
ChangePhoneNumberAsync(TUser user, string phoneNumber, string token) -
@tmg 嗯,我明白了。它感觉不是对称的,因为它用于电子邮件确认,我不必再次设置电子邮件(并且还有一个类似的方法 ChangeEmailAsync)。我本来期望像 ConfirmPḧoneNumberAsync(TUser user, string token) 这样的东西。
-
您可以在我的managecontroller中看到可能为您提供启发的代码示例
标签: asp.net-core asp.net-core-mvc asp.net-core-identity