基于C# IdentityDbContext的客户端与API双因素认证登录问题
双因素认证(2FA)登录API实现问题
我有客户端和API两个独立项目,使用IdentityDbContext进行身份管理。当前实现逻辑是:用户登录时,如果账号已启用双因素认证(2FA),API会返回RequiresTwoFactor = true,引导客户端跳转至LoginWith2fa页面。相关核心代码如下:
var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, true, lockoutOnFailure: true); if (result.IsLockedOut) { return StatusCode(423, new { message = "User account locked out" }); } if (result.RequiresTwoFactor) { return Ok(new { RequiresTwoFactor = true, }); }
现在的问题是,我不知道该如何实现LoginWith2fa页面的API端认证逻辑。原本_signInManager.GetTwoFactorAuthenticationUserAsync()方法可以获取待验证的2FA用户,但这个方法仅在客户端项目中可用,我希望所有认证逻辑都由API项目处理。
我尝试了以下代码来处理2FA登录,但始终返回认证失败:
var signInResult = await _signInManager.PasswordSignInAsync(request.UserName, request.Password, true, lockoutOnFailure: true); if (!signInResult.RequiresTwoFactor) { return Unauthorized(new { message = "Not Enable 2FA" }); } var result = await _signInManager.TwoFactorAuthenticatorSignInAsync(request.VerificationCode, true, true); if (result.IsLockedOut) { return StatusCode(423, new { message = "User account locked out" }); } if (result.Succeeded) { return Ok(new {Message="Success Login"}) }
内容的提问来源于stack exchange,提问作者TCNJK
相关产品推荐
相关产品推荐

