MVC 5 播种用户仅适用于电子邮件
MVC 5 seeding users only works for email
我正在开发一个基于 MVC5 和 EF Code First 的项目。
我有多个上下文,但我在这里关心的是 ApplicationDbContext,它具有以下配置代码:
namespace DX.DAL.Migrations.ApplicationDbMigrations
{
public class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Migrations\ApplicationDbMigrations";
ContextKey = "DX.DAL.Context.ApplicationDbContext";
}
protected override void Seed(ApplicationDbContext context)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
if (!roleManager.RoleExists("Admin"))
{
roleManager.Create(new IdentityRole("Admin"));
}
var user = new ApplicationUser { UserName = "John", Email = "j.doe@world.com" };
if (userManager.FindByName("John") != null) return;
var result = userManager.Create(user, "Password123@");
if (result.Succeeded)
{
userManager.AddToRole(user.Id, "Admin");
}
}
}
}
当我尝试使用上面设置的电子邮件和密码登录时,出现错误:
Invalid login attempt
我写了下面的SQL查询:
SELECT * FROM AspNetUsers
我看到了以下内容:
这样种子就创建好了。但是为什么我不能登录?
此外,我知道如果我将用户名更改为与电子邮件相同,那么它就可以登录了。用户名和电子邮件必须相同才能使 ASP.NET MVC 5 中的成员身份生效吗?
在尝试了很多不同的东西之后,我选择了 LukeP 的解决方案 here。
我保留了 Identity,只是添加了一个名为 DisplayUsername
的新 属性,并允许用户在注册时进行设置。
我正在开发一个基于 MVC5 和 EF Code First 的项目。
我有多个上下文,但我在这里关心的是 ApplicationDbContext,它具有以下配置代码:
namespace DX.DAL.Migrations.ApplicationDbMigrations
{
public class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Migrations\ApplicationDbMigrations";
ContextKey = "DX.DAL.Context.ApplicationDbContext";
}
protected override void Seed(ApplicationDbContext context)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
if (!roleManager.RoleExists("Admin"))
{
roleManager.Create(new IdentityRole("Admin"));
}
var user = new ApplicationUser { UserName = "John", Email = "j.doe@world.com" };
if (userManager.FindByName("John") != null) return;
var result = userManager.Create(user, "Password123@");
if (result.Succeeded)
{
userManager.AddToRole(user.Id, "Admin");
}
}
}
}
当我尝试使用上面设置的电子邮件和密码登录时,出现错误:
Invalid login attempt
我写了下面的SQL查询:
SELECT * FROM AspNetUsers
我看到了以下内容:
这样种子就创建好了。但是为什么我不能登录?
此外,我知道如果我将用户名更改为与电子邮件相同,那么它就可以登录了。用户名和电子邮件必须相同才能使 ASP.NET MVC 5 中的成员身份生效吗?
在尝试了很多不同的东西之后,我选择了 LukeP 的解决方案 here。
我保留了 Identity,只是添加了一个名为 DisplayUsername
的新 属性,并允许用户在注册时进行设置。