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

ASP.NET Core迁移用户数据库后出现Invalid Login Attempt登录失败

问题定位与排查方案

从你的描述和代码来看,登录验证代码本身没有问题——毕竟PC端使用迁移后的数据库能正常登录,说明逻辑是通的。问题大概率出在数据库迁移过程或者笔记本端的项目配置上,以下是具体排查方向:

1. 数据库迁移完整性检查

  • 确认笔记本上的数据库中,AspNetUsers表的PasswordHash字段是否完整迁移:这个字段是加密后的用户密码,迁移时如果出现数据丢失、截断或编码错误,会直接导致密码验证失败。
  • 对比PC和笔记本数据库中同一账号的PasswordHash、SecurityStamp字段值是否完全一致,这两个字段是Identity密码验证的核心依据。

2. 笔记本端项目配置验证

  • 检查笔记本项目的配置文件(如appsettings.json)中的数据库连接字符串,确认是否正确指向迁移后的目标数据库,避免出现连接到旧库或空库的情况。
  • 核对笔记本端项目中Identity的密码验证规则(如密码长度、字符要求等),确保和PC端完全一致——虽然PC端能正常登录,这个概率较低,但如果笔记本端修改过配置,也可能导致验证不通过。

3. 手动验证密码哈希匹配

可以在笔记本端的登录代码中临时添加一段调试代码,直接验证密码与数据库中存储的哈希值是否匹配:

var user = await _userManager.FindByEmailAsync(Input.Email);
if(user != null)
{
    var passwordHasher = new PasswordHasher<IdentityUser>();
    var verifyResult = passwordHasher.VerifyHashedPassword(user, user.PasswordHash, Input.Password);
    // 可以用日志或调试工具查看verifyResult的值:Success表示匹配,Failed表示不匹配
    _logger.LogInformation("Password verify result: {Result}", verifyResult);
}

如果返回Failed,说明数据库中的PasswordHash确实有问题;如果返回Success,再排查SignInManager的配置或其他环境差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:35:27