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

如何在Identity Core中移除用户的双因素认证提供商

移除Identity Core中用户的双因素认证提供商

在.NET7 Identity Core里,GetValidTwoFactorProvidersAsync返回的有效双因素提供商列表,是根据用户已配置的认证方式对应的**用户令牌(UserToken)**或关联属性判断的。要移除指定提供商,需针对不同认证类型做对应操作:

1. 移除Authenticator认证方法

Authenticator的启用状态依赖用户是否存在AuthenticatorKey类型的令牌,彻底移除需两步:

  • 重置Authenticator密钥(清除密钥内容)
  • 删除对应的用户令牌记录

代码示例:

// 重置Authenticator密钥
await _userManager.ResetAuthenticatorKeyAsync(user);
// 删除Authenticator对应的用户令牌
await _userManager.RemoveTokenAsync(user, "Authenticator", "AuthenticatorKey");

执行后,GetValidTwoFactorProvidersAsync将不再返回Authenticator。

2. 移除SMS认证方法

SMS认证的有效性关联用户的PhoneNumberConfirmed属性(需为true才会被判定为有效提供商),移除操作如下:

  • 将PhoneNumberConfirmed设为false
  • 可选:清除用户的PhoneNumber属性(彻底清除手机号关联)

代码示例:

user.PhoneNumberConfirmed = false;
// 可选:清除用户手机号
// user.PhoneNumber = null;
await _userManager.UpdateAsync(user);

完成后,SMS会从有效提供商列表中消失。

3. 自定义/其他提供商的通用移除逻辑

对于自定义双因素提供商,大多也是基于用户令牌判断有效性,直接删除对应令牌即可:

// 替换为目标提供商的名称和令牌标识
await _userManager.RemoveTokenAsync(user, "目标提供商名称", "对应令牌名称");

验证移除结果

操作完成后,可调用以下代码确认目标提供商已移除:

var validProviders = await _userManager.GetValidTwoFactorProvidersAsync(user);
// 检查列表中是否已无目标提供商

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:04