要解决ASP.NET Core 2.1身份验证的多因素认证无法正常工作的问题,可以尝试以下步骤:
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.Configure(options =>
{
// 其他配置项...
// 启用多因素认证
options.SignIn.RequireConfirmedEmail = true;
options.Tokens.EmailConfirmationTokenProvider = "CustomEmailConfirmation";
});
services.AddAuthentication()
.AddGoogle(options =>
{
// Google认证配置...
})
.AddMicrosoftAccount(options =>
{
// Microsoft认证配置...
});
services.AddAuthorization(options =>
{
// 授权策略配置...
});
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
var confirmationLink = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, token = token }, Request.Scheme);
// 发送确认电子邮件...
// 启用多因素认证
await _userManager.SetTwoFactorEnabledAsync(user, true);
// 其他逻辑...
}
SignInManager.TwoFactorSignInAsync
方法来验证令牌,并在验证成功后登录用户。例如:var result = await _signInManager.TwoFactorSignInAsync("Email", model.TwoFactorCode, model.RememberMe, model.RememberBrowser);
if (result.Succeeded)
{
// 多因素认证成功,登录用户...
// 其他逻辑...
}
通过检查和调整以上代码示例,你应该能够解决ASP.NET Core 2.1身份验证的多因素认证无法正常工作的问题。当然,具体的解决方法可能因你的应用程序的配置和需求而有所不同。