c# - 为什么 ChangePhoneNumber 总是返回错误的代码?
问题描述
我正在尝试使用 UserManager 和 GenerateChangePhoneNumberTokenAsync 方法恢复密码。在尝试通过 ChangePhoneNumberAsync 确认该令牌后,但每次我收到有关错误代码的错误时。
我尝试了不同的条件,每次都收到相同的错误。
生成令牌
var token = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.Username);
确认令牌
var verified = await _userManager.ChangePhoneNumberAsync(user, model.Phone, model.Token);
启动.cs
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.SignIn.RequireConfirmedEmail = true;
config.SignIn.RequireConfirmedPhoneNumber = true;
config.Tokens.ChangePhoneNumberTokenProvider = "Phone";
})
电话和用户名是一样的。
var user = new ApplicationUser
{
Email = $"{_templateCustomerEmail}{(_context.Users.Count() + 1)}@{_appSettings.Domain}",
DateSignUp = DateTime.UtcNow,
FullName = model.FullName,
Id = Guid.NewGuid().ToString(),
PhoneNumber = model.Username,
EmailConfirmed = true,
PhoneNumberConfirmed = false,
UserName = model.Username
};
我希望这些东西的设置非常容易。不幸的是,面临着一个虚拟的问题。也许问题出在方法名称或其他方面。
解决方案
GenerateChangePhoneNumberTokenAsync
获取用户和电话号码。您正在给它用户和用户名,因此当您尝试更改它(确认令牌)时,您正在尝试将电话号码与不匹配的用户名匹配,因此会出错。
推荐阅读
- spring-mvc - 使用 Spring Web Flow 上传文件
- vb.net - 使用子字符串在字符串中拆分日期和时间
- ubuntu - 在 Ubuntu 上阻止 ASN 而不是 IP/CIDR
- jquery - 使用 .html() 未显示图标
- php - 如何使用 PHP 从 JSON 中获取最后 5 个数据?
- python - 如何从值为“No”而不是 NaN 的列中清除值?
- matlab - 在 Win10 上为 MATLAB 编译 SPAMS 工具箱时出现“未声明的 '_finite'”错误
- grails - Grails Spring Security Shiro,如何在无需注销重新登录的情况下刷新权限?
- julia - 如何计算我的主要代码的时间?
- android - How can I use Android expansion files using App Bundle?