如何确认ASP.Net Core 1.1MVC中的电话号码

Ale*_* A. 6 asp.net-core-mvc asp.net-core asp.net-core-identity

我无法弄清楚如何在asp.net核心1.1中进行电话号码确认

身份服务配置包含要求确认的电子邮件和/或电话号码的明确选项.

它可以通过以下方式完成:

services
    .AddIdentity<User, Role>(options =>
    {
        options.SignIn.RequireConfirmedEmail = true;
        options.SignIn.RequireConfirmedPhoneNumber = true;
     });
Run Code Online (Sandbox Code Playgroud)

由于UserManager包含显式令牌生成器及其验证器,因此电子邮件的验证非常简单:

var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
Run Code Online (Sandbox Code Playgroud)

生成的令牌可以通过以下方式验证:

var result = await _userManager.ConfirmEmailAsync(user, code);
Run Code Online (Sandbox Code Playgroud)

如果令牌有效,上面的行将把user.EmailConfirmed标志切换为true.

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

但是,用户管理器包含的用户手机更改方法很少:

_userManager.GenerateChangePhoneNumberTokenAsync();
Run Code Online (Sandbox Code Playgroud)

_userManager.VerifyChangePhoneNumberTokenAsync();
Run Code Online (Sandbox Code Playgroud)

但似乎这些方法不会切换user.PhoneNumberConfirmed标志.

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

Ale*_* A. 10

感谢@tmg指向我的源代码.

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

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

var result = await _userManager
    .ChangePhoneNumberAsync(user, user.PhoneNumber, token);
Run Code Online (Sandbox Code Playgroud)

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

GenerateChangePhoneNumberTokenAsync不在ASP.NET Core 2.0中生成SMS友好标记


归档时间:

查看次数:

2946 次

最近记录:

8 年,2 月 前