saf*_*f21 4 c# asp.net asp.net-identity
我在asp.net领域非常棒.所以我的问题可能在互联网的任何地方都得到了解答,但我们都不了解流程创建.这是个问题.
我正在尝试创建简单的"网站项目",当该网站启动时,如果该表尚不存在,它应该在数据库内创建所有必要的身份表.然后我将在表中添加角色并将一个用户设置为此表的超级管理员.
任何人都可以帮我这个或分享关于这个问题的任何链接.
jeg*_*ado 15
我假设您正在使用ASP.NET MVC.
您可以使用数据库初始化为数据库设定种子.
public class MyDBInitializer : CreateDatabaseIfNotExists<ApplicationDBContext>
{
protected override void Seed(ApplicationDBContext context)
{
base.Seed(context);
}
}
Run Code Online (Sandbox Code Playgroud)
在种子方法上,您可以填充数据库并为应用程序创建默认用户.
protected override void Seed(ApplicationDBContext context)
{
// Initialize default identity roles
var store = new RoleStore<IdentityRole>(context);
var manager = new RoleManager<IdentityRole>(store);
// RoleTypes is a class containing constant string values for different roles
List<IdentityRole> identityRoles = new List<IdentityRole>();
identityRoles.Add(new IdentityRole() { Name = RoleTypes.Admin });
identityRoles.Add(new IdentityRole() { Name = RoleTypes.Secretary });
identityRoles.Add(new IdentityRole() { Name = RoleTypes.User });
foreach(IdentityRole role in identityRoles)
{
manager.Create(role);
}
// Initialize default user
var store = new UserStore<ApplicationUser>(context);
var manager = new UserManager<ApplicationUser>(store);
ApplicationUser admin = new ApplicationUser();
admin.Email = "admin@admin.com";
admin.UserName = "admin@admin.com";
manager.Create(admin, "1Admin!");
manager.AddToRole(admin.Id, RoleTypes.Admin);
// Add code to initialize context tables
base.Seed(context);
}
Run Code Online (Sandbox Code Playgroud)
在Global.asax.cs上,您应该注册数据库初始化程序
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Database.SetInitializer(new MyDBInitializer());
}
Run Code Online (Sandbox Code Playgroud)
请注意,存在不同类型的数据库初始化策略,其行为取决于数据库初始化程序.请检查上面的链接.