Asp.net-Core

如何在 ASP.Net Core 1.1MVC 中確認電話號碼

  • August 24, 2017

我無法弄清楚如何在 asp.net core 1.1 中進行電話號碼確認

身份服務配置包含需要確認的電子郵件和/或電話號碼的明確選項。

可以通過以下方式完成:

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 標誌切換為 true。

現在的問題是我沒有看到類似的方法來生成電話驗證令牌及其等效的方法來驗證它(如果成功,這反過來應該將 user.PhoneNumberConfirmed 標誌切換為 true)。

使用者管理器包含很少的方法來進行使用者電話更改:

_userManager.GenerateChangePhoneNumberTokenAsync();

_userManager.VerifyChangePhoneNumberTokenAsync();

但似乎這些方法不會切換 user.PhoneNumberConfirmed 標誌。

我錯過了什麼嗎?確認使用者電話號碼的正確方法是什麼(換句話說,將 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不再生成對 SMS 友好的令牌,目前無用:

GenerateChangePhoneNumberTokenAsync 未在 ASP.NET Core 2.0 中生成對 SMS 友好的令牌

引用自:https://stackoverflow.com/questions/44956824