asp.net-core - 如何在ASP.Net Core 1.1MVC中确认电话号码

标签 asp.net-core asp.net-core-mvc asp.net-core-identity

我无法弄清楚如何在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/

相关文章:

identityserver4 - 使用 IdentityServer4 对 Web API 进行基于角色的授权

c# - 应如何在 IHostedService 中使用取消标记?

asp.net-core - .NET Core Identity Framework 和 Telegram Login Widget(无数据库)

c# - 在 ASP.NET Core Mvc 中使用 IDbContextFactory 注册 EF Core

c# - 如何在一个查询中获取具有角色的用户?

asp.net-core - 如何使用 Asp.Net Core 2.2/IdentityServer4/SP.NET Core Identity 手动散列密码

c# - 对于动态加载的 Razor 类库,ASP.NET Core 运行时编译失败并显示 "Cannot find compilation library location for package"

c# - servicestack与asp.net core读取web.config

routes - 如何在一个解决方案中为两个单独的项目在 asp.net core 中设置路由?

asp.net-core - 如何使用 Entity Framework 添加具有 REST 操作的 API Controller ?