无法使用ASP.NET Core MVC中的DBContext创建的用户登录



我正在尝试用初始数据播种DB,我正在使用以下代码来创建用户。用户会创建,密码哈希等,但是当我尝试使用密码登录时,它不会与错误消息登录我:Invalid login attempt。我究竟做错了什么?我正在使用标识模板的ASP.NET Core MVC应用程序,而不是自定义登录。

        var mymail = "my@my.com";
        var mypw = "Test1.";
        var applicationUsers = new ApplicationUser[]
        {
            new ApplicationUser {
                UserName = Constants.AnonUserName,
                Email = "Anonymous@xyz.com"
            },
            new ApplicationUser {
                UserName = mymail,
                Email = mymail
            }
        };
        var pwHasher = new PasswordHasher<ApplicationUser>();
        applicationUsers.ToList().ForEach(u =>
        {
            u.PasswordHash = pwHasher.HashPassword(u, mypw);
            context.ApplicationUsers.Add(u);
        });
        context.SaveChanges();

登录失败,因为db中的 NormalizedUserName字段为null,在登录时,发出查询之后(失败(:

SELECT "u"."Id", "u"."AccessFailedCount", "u"."ConcurrencyStamp", "u"."Email", "u"."EmailConfirmed", "u"."LockoutEnabled", "u"."LockoutEnd", "u"."NormalizedEmail", "u"."NormalizedUserName", "u"."PasswordHash", "u"."PhoneNumber", "u"."PhoneNumberConfirmed", "u"."SecurityStamp", "u"."TwoFactorEnabled", "u"."UserName"
    FROM "AspNetUsers" AS "u"
    WHERE "u"."NormalizedUserName" = $1
    LIMIT 1
DETAIL:  parameters: $1 = 'MY@MY.COM'

我想解决方案是注入ilookupnormalizer服务并使用其Normalize方法归一化,但已经做得太多了。我正在注入usermanager服务,并使用其CreateSync方法来创建用密码的用户,如@Tseng在评论中的建议。

最新更新