如何在 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
我不知道如何在 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