如何在 ASP.Net Core 1.1MVC 中确认 phone 数字

How to confirm a phone number in ASP.Net Core 1.1MVC

我不知道如何在 asp.net 核心 1.1

中进行 phone 号码确认

身份服务配置包含要求确认电子邮件 and/or phone 号码的明确选项。

可以通过以下方式完成:

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 标志切换为真。

现在的问题是我没有看到类似的方法来生成 phone 验证令牌及其等效方法来验证它(反过来应该将 user.PhoneNumberConfirmed 标志切换为 true如果成功的话)。

用户管理器包含很少的方法来执行用户 phone 更改:

_userManager.GenerateChangePhoneNumberTokenAsync();

_userManager.VerifyChangePhoneNumberTokenAsync();

但这些方法似乎没有切换 user.PhoneNumberConfirmed 标志。

我错过了什么吗?确认用户 phone 号码的正确方法是什么(换句话说,将 user.PhoneNumberConfirmed 设置为 true)?

感谢@tmg 为我指出源代码。

根据它,正确的方法确实是使用 GenerateChangePhoneNumberTokenAsync 来生成令牌并使用 ChangePhoneNumberAsync 来验证它(如果验证则反过来将 PhoneNumberConfirmed 设置为 true成功):

var token = await _userManager
    .GenerateChangePhoneNumberTokenAsync(user, user.PhoneNumber);

var result = await _userManager
    .ChangePhoneNumberAsync(user, user.PhoneNumber, token);

备注: 在ASP.NET Core 2.0.0 中,不幸的是,有一个错误(回归)并且GenerateChangePhoneNumberTokenAsync 不生成短信友好不再有令牌,目前没用:

GenerateChangePhoneNumberTokenAsync is not generating an SMS-friendly token in ASP.NET Core 2.0