如何在ASP.Net Core 1.1MVC中确认电话号码 [英] How to confirm a phone number in ASP.Net Core 1.1MVC
问题描述
我不知道如何在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);
以上行将切换用户.如果令牌有效,则将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友好令牌,并且目前是无用的:>
GenerateChangePhoneNumberNumberAsync在ASP.NET Core 2.0中未生成SMS友好令牌
I cannot figure out how to do a phone number confirmation in asp.net core 1.1
Identity service configuration contains explicit options to require confirmed email and/or phone number.
It can be done the following way:
services
.AddIdentity<User, Role>(options =>
{
options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = true;
});
The validation of the email is quite straight forward as the UserManager contains explicit token generator and its validator:
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
The generated token can be validated the following way:
var result = await _userManager.ConfirmEmailAsync(user, code);
The above line will switch the user.EmailConfirmed flag to true if the token is valid.
Now the problem is that I don't see a similar method to generate a phone validation token and its equivalent method to validate it (which in turn should switch the user.PhoneNumberConfirmed flag to true if successful).
User manager contains however few methods to do a user phone change:
_userManager.GenerateChangePhoneNumberTokenAsync();
and
_userManager.VerifyChangePhoneNumberTokenAsync();
But it seems these methods don't switch the user.PhoneNumberConfirmed flag.
Am I missing something? What would be the correct way to confirm the user phone number (in other words to set user.PhoneNumberConfirmed to true) ?
Thanks to @tmg for pointing me to the source code.
According to it, the right way is indeed to use GenerateChangePhoneNumberTokenAsync
in order to generate a token and ChangePhoneNumberAsync
to validate it (which in turn sets PhoneNumberConfirmed
to true if validation succeeds):
var token = await _userManager
.GenerateChangePhoneNumberTokenAsync(user, user.PhoneNumber);
var result = await _userManager
.ChangePhoneNumberAsync(user, user.PhoneNumber, token);
Remark: in ASP.NET Core 2.0.0, unfortunately, there is a bug (regression) and GenerateChangePhoneNumberTokenAsync
does not generate an SMS-friendly token anymore and is currently useless:
GenerateChangePhoneNumberTokenAsync is not generating an SMS-friendly token in ASP.NET Core 2.0
这篇关于如何在ASP.Net Core 1.1MVC中确认电话号码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!