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

ASP.NET Core登录功能失效问题排查及修复咨询

问题修复方案

核心问题原因

  1. 密码哈希生成逻辑不匹配:调用hasher.HashPassword(null, "Andrew13mtv@")时传入null作为用户实例,ASP.NET Core Identity的PasswordHasher生成哈希时会依赖用户对象的内部属性(如SecurityStamp),空实例生成的哈希与登录验证时用完整用户对象生成的验证哈希无法匹配。
  2. 缺失必填字段:默认Identity User类要求UserName字段,初始化数据时未设置该字段,会导致登录时身份识别失败。

修复步骤

1. 修正种子数据中的用户初始化

生成密码哈希时传入完整用户实例,同时补充UserName字段(建议与Email保持一致,适配邮箱登录逻辑):

var user = new User
{
    FirstName = "Andrij",
    LastName = "Matviiv",
    Email = "blalbalal@gmail.com",
    UserName = "blalbalal@gmail.com" // 补充UserName字段,与Email一致
};

// 使用完整user实例生成匹配的密码哈希
user.PasswordHash = hasher.HashPassword(user, "Andrew13mtv@");

builder.Entity<User>().HasData(user);

2. 重新生成数据库种子数据

修改种子数据后,重新应用迁移并更新数据库,确保正确的用户数据存入数据库:

dotnet ef migrations add FixUserSeedData
dotnet ef database update

3. 可选:配置Identity允许邮箱登录(若需)

如果项目需要直接用邮箱作为登录凭据,可在Identity服务配置中添加以下规则:

builder.Services.Configure<IdentityOptions>(options =>
{
    options.User.RequireUniqueEmail = true;
    options.SignIn.RequireConfirmedEmail = false; // 根据业务需求调整
});

完成以上操作后,使用正确凭据即可正常登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:01:18