Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 5 无法使用asp.net标识以种子数据库配置登录_Asp.net Mvc 5_Asp.net Identity - Fatal编程技术网

Asp.net mvc 5 无法使用asp.net标识以种子数据库配置登录

Asp.net mvc 5 无法使用asp.net标识以种子数据库配置登录,asp.net-mvc-5,asp.net-identity,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&l

我在登录时遇到问题,尽管我看到表中充满了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");
            }
        }
protected override void Seed(www.Models.ApplicationDbContext上下文)
{
如果(!context.Roles.Any(x=>x.Name==“admin”))
{
var roleStore=新roleStore(上下文);
var roleManager=新roleManager(roleStore);
var role=newidentityrole{Name=“admin”};
角色管理器。创建(角色);
}
如果(!context.Users.Any)(x=>x.UserName==“admin”&&x.Email==”admin@admin.com"))
{
var userStore=新的userStore(上下文);
var userManager=newusermanager(userStore);
var user=newapplicationuser{UserName=“admin”,Email=“admin@admin.com" };
var hasher=new PasswordHasher();
创建(用户,“MySecret5”);
userManager.AddToRole(user.Id,“admin”);
}
}
当我尝试登录时,会出现错误“登录尝试无效”。 我错过了什么

编辑: 我正在学习关于asp.net的所有知识,所以我现在是个大傻瓜:(所以我发现这个例子对我很有用,如果其他人需要它,这里就是:

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");
            }
        }
protected override void Seed(www.Models.ApplicationDbContext上下文)
{
var userStore=新的userStore(上下文);
var userManager=newusermanager(userStore);
如果(!context.Users.Any)(x=>x.UserName==)admin@v.com"))
{
var user=new ApplicationUser{UserName=”admin@v.com“,电子邮件=”admin@v.com" };
创建(用户,“Password5%”;
context.Roles.AddOrUpdate(x=>x.Name,新的IdentityRole{Name=“admin”});
SaveChanges();
userManager.AddToRole(user.Id,“admin”);
}
}

谢谢你的帮助和时间。

这对我来说完美无瑕

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");
            }
        }
protected override void Seed(www.Models.ApplicationDbContext上下文)
{
var userStore=新的userStore(上下文);
var userManager=newusermanager(userStore);
如果(!context.Users.Any)(x=>x.UserName==)admin@v.com"))
{
var user=new ApplicationUser{UserName=”admin@v.com“,电子邮件=”admin@v.com" };
创建(用户,“Password5%”;
context.Roles.AddOrUpdate(x=>x.Name,新的IdentityRole{Name=“admin”});
SaveChanges();
userManager.AddToRole(user.Id,“admin”);
}
}

似乎种子用户登录的问题与MVC不准确有关,请看:

var result = await SignInManager.PasswordSignInAsync(model.Emali, model.Password, model.RememberMe, shouldLockout: false);
如果我们为该用户设定种子:

var user = new ApplicationUser { UserName = "SomeName", Email = "admin@v.com" };
结果将是==false,但如果我们将结果中的model.Emali更改为model.UserName,则登录成功-当然现在登录时,我们必须提供用户名,例如:

用户名:SomeName


Passwort:Password5%;

从初始的
userManager.Create(用户“MySecret5”)得到的
IdentityResult
是什么;
call?还有,这是从哪里运行的?我可以想象这样一种场景:迁移是从本地机器运行的,与在Web服务器上登录(使用不同的
MachineKey
)相比,使用本地机器
MachineKey
来散列密码.IdentityResult在何处检查?
var result=userManager.Create(用户,“MySecret5”);
.IdentityResult有以下定义:我不知道如何/在何处检查,但如果您指的是userManager.Create(用户,“MySecret5”);当我在调试模式下运行应用程序时,它永远不会到达那里,跟踪将停止到此部分:var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shoulldlockout:false);结果是失败检查您的IdentityConfig并确保UserLockoutEnabledByDefault未设置为true。如果设置为true,请添加userManager.SetLockoutEnabled(user.Id,false);同时检查您的密码验证程序设置以确保您的密码符合这些条件(RequiredOnletterDigit)。