You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:48:11