启用双因素认证后登录触发Identity的ArgumentException错误求助
启用双因素认证后登录触发Identity的ArgumentException错误求助
大家好,我遇到了一个Identity双因素认证相关的bug,想请各位帮忙看看:
我写了一个AccountController,里面封装了登录、注册、双因素认证管理等所有账号相关操作,还在用户资料模块加了开关,允许用户手动启用/关闭两步登录功能。
本来所有流程测试都正常,但当用户启用双因素认证后,再次尝试登录时直接触发了异常,错误信息如下:
ArgumentException: Entity type 'IdentityUserToken' is defined with a 2-part composite key, but 3 values were passed to the 'Find' method.
这个错误的上下文细节在截图里会更清晰,核心问题就是Identity的IdentityUserToken实体定义的是2部分的复合键,但Find方法却接收到了3个匹配值,导致参数不匹配。
下面是我的IdentityDataBaseContext核心代码(后续还有部分实体配置内容,但核心结构如下):
public class IdentityDataBaseContext : IdentityDbContext<User> { public IdentityDataBaseContext(DbContextOptions<IdentityDataBaseContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<IdentityUser<string>>().ToTable("Users"); // 这里我还对Identity的部分实体做了表名自定义等配置 // 后续还有其他实体的配置代码 base.OnModelCreating(modelBuilder); } }
我目前怀疑是不是OnModelCreating里的配置顺序出了问题?或者是自定义的User实体和Identity默认的IdentityUserToken键配置不兼容?有没有朋友遇到过类似的问题,能给我一些排查方向或者解决思路吗?
备注:内容来源于stack exchange,提问作者Hanii Vand
相关产品推荐
相关产品推荐

