无法使用asp.net身份登录种子数据库配置

joh*_*ohn 6 asp.net-mvc-5 asp.net-identity

我有登录问题,即使我看到表格中填充了来自Configuration.cs的种子用户信息:

protected override void Seed(www.Models.ApplicationDbContext context)
        {
            if (!context.Roles.Any(x => x.Name == "admin"))
            {
                var roleStore = new RoleStore<IdentityRole>(context);
                var roleManager = new RoleManager<IdentityRole>(roleStore);
                var role = new IdentityRole { Name = "admin" };
                roleManager.Create(role);
            }

            if (!context.Users.Any(x => x.UserName == "admin" && x.Email == "admin@admin.com"))
            {
                var userStore = new UserStore<ApplicationUser>(context);
                var userManager = new UserManager<ApplicationUser>(userStore);
                var user = new ApplicationUser { UserName = "admin", Email = "admin@admin.com" };
                var hasher = new PasswordHasher();
                userManager.Create(user, "MySecret5");
                userManager.AddToRole(user.Id, "admin");
            }
        }
Run Code Online (Sandbox Code Playgroud)

当我尝试登录时,我收到错误"无效的登录尝试".我错过了什么?

编辑:我正在学习所有关于asp.net的东西,所以我现在非常大的noob :(所以我发现这个例子是为我工作,如果有人需要它在这里它是:

protected override void Seed(www.Models.ApplicationDbContext context)
        {
            var userStore = new UserStore<ApplicationUser>(context);
            var userManager = new UserManager<ApplicationUser>(userStore);

            if (!context.Users.Any(x => x.UserName == "admin@v.com"))
            {
                var user = new ApplicationUser { UserName = "admin@v.com", Email = "admin@v.com" };
                userManager.Create(user, "Password5%");
                context.Roles.AddOrUpdate(x => x.Name, new IdentityRole { Name = "admin" });
                context.SaveChanges();
                userManager.AddToRole(user.Id, "admin");
            }
        }
Run Code Online (Sandbox Code Playgroud)

感谢您的所有帮助和时间.

小智 5

看来,用种子用户登录的问题与MVC错误有关,请查看:

var result = await SignInManager.PasswordSignInAsync(model.Emali, model.Password, model.RememberMe, shouldLockout: false);
Run Code Online (Sandbox Code Playgroud)

如果我们为该用户播种:

var user = new ApplicationUser { UserName = "SomeName", Email = "admin@v.com" };
Run Code Online (Sandbox Code Playgroud)

结果将是== 假的,但如果我们改变model.Emali的结果model.UserName成功请登录结束-当然现在当我们登录时,我们必须给用户名如:

用户名:SomeName;

密码:密码5%;


joh*_*ohn 3

这对我来说完美无缺。

protected override void Seed(www.Models.ApplicationDbContext context)
        {
            var userStore = new UserStore<ApplicationUser>(context);
            var userManager = new UserManager<ApplicationUser>(userStore);

            if (!context.Users.Any(x => x.UserName == "admin@v.com"))
            {
                var user = new ApplicationUser { UserName = "admin@v.com", Email = "admin@v.com" };
                userManager.Create(user, "Password5%");
                context.Roles.AddOrUpdate(x => x.Name, new IdentityRole { Name = "admin" });
                context.SaveChanges();
                userManager.AddToRole(user.Id, "admin");
            }
        }
Run Code Online (Sandbox Code Playgroud)