如何将固定角色(例如管理员)添加到现有的Asp.Net Mvc / Identity 2网站?
在链接中
http://bitoftech.net/2015/03/11/asp-net-identity-2-1-roles-based-authorization-authentication-asp-net-web-api/,有以下代码,这正是我想要做的。但是,自应用程序以来,Seed
函数是否会被执行? (我已经在var lookup1 = new List<L1>{new L1 {...},...}; tableL1.ForEach(l => context.tableL1.AddOrUpdate(p=>p.Title, l)); context.SaveChanges();
函数中有一些代码Seed
来为一些查找表提供种子。)。将角色添加到已在线的应用程序的正确方法是什么?
// internal sealed class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
internal sealed class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(AspNetIdentity.WebApi.Infrastructure.ApplicationDbContext context)
{
// This method will be called after migrating to the latest version.
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var user = new ApplicationUser()
{
UserName = "SuperPowerUser",
Email = "taiseer.joudeh@gmail.com",
EmailConfirmed = true,
FirstName = "Taiseer",
LastName = "Joudeh",
Level = 1,
JoinDate = DateTime.Now.AddYears(-3)
};
manager.Create(user, "MySuperP@ss!");
if (roleManager.Roles.Count() == 0)
{
roleManager.Create(new IdentityRole { Name = "SuperAdmin" });
roleManager.Create(new IdentityRole { Name = "Admin"});
roleManager.Create(new IdentityRole { Name = "User"});
}
var adminUser = manager.FindByName("SuperPowerUser");
manager.AddToRoles(adminUser.Id, new string[] { "SuperAdmin", "Admin" });
}
}
答案 0 :(得分:1)
如果您想为数据库设定种子,则必须在程序包管理器控制台中Enable-Migrations
。
我猜你已经完成了,因为你已经拥有 Configuration.cs 文件。
在configuration
类的构造函数中,确保将AutomaticMigrationsEnabled
设置为false
,否则将重新创建数据库。
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
现在您可以编译解决方案,并从程序包管理器控制台(确保在默认项目组合中选择正确的项目)运行:
Update-Database
或
Update-Database -Verbose
如果您想收集更多信息。
你应该在数据库中看到你的新数据。