我无法弄清楚如何在asp.net Core 1.1中进行电话号码确认
身份服务配置包含显式选项,要求提供确认的电子邮件和/或电话号码。
可以通过以下方式完成:
services
.AddIdentity<User, Role>(options =>
{
options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = true;
});
电子邮件的验证非常简单,因为UserManager包含显式 token 生成器及其验证器:
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
可以通过以下方式验证生成的 token :
var result = await _userManager.ConfirmEmailAsync(user, code);
如果 token 有效,则以上行会将user.EmailConfirmed标志切换为true。
现在的问题是,我没有看到类似的方法来生成电话验证 token ,也没有看到用于验证它的等效方法(如果成功,则应将user.PhoneNumberConfirmed标志切换为true)。
但是,用户管理器包含几种更改用户电话的方法:
_userManager.GenerateChangePhoneNumberTokenAsync();
和
_userManager.VerifyChangePhoneNumberTokenAsync();
但是似乎这些方法不会切换user.PhoneNumberConfirmed标志。
我想念什么吗?确认用户电话号码的正确方法是什么(换句话说,将user.PhoneNumberConfirmed设置为true)?
最佳答案
感谢@tmg指出我的源代码。
根据它,正确的方法确实是使用GenerateChangePhoneNumberTokenAsync
来生成 token ,并使用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
不再生成SMS友好 token ,并且目前无用:GenerateChangePhoneNumberTokenAsync is not generating an SMS-friendly token in ASP.NET Core 2.0
关于asp.net-core - 如何在ASP.Net Core 1.1MVC中确认电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956824/