【发布时间】:2016-08-12 13:35:29
【问题描述】:
我有一个使用 ASP.NET Identity (v2.1) 和 Entity Framework v6.1 的 Web Api 解决方案。在 Configuration.cs 文件的 Seed() 方法中,我有创建我的第一个身份用户的代码。此代码使用身份框架来散列密码、创建安全标记等。这些都是我无法通过 SQL 完成的事情,因此添加到 Up() 方法似乎不是一个选项。
protected override void Seed(ApplicationDbContext context)
{
// Create the admin user
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 = "adminuser",
Email = "adminuser@mycompany.com",
EmailConfirmed = true,
FirstName = "John",
LastName = "Does",
JoinDate = DateTime.Now.AddYears(-1)
};
manager.Create(user, "SuperSecurePassword321!");
if (roleManager.Roles.Count() == 0)
{
roleManager.Create(new IdentityRole { Name = "Admin" });
roleManager.Create(new IdentityRole { Name = "Employee" });
roleManager.Create(new IdentityRole { Name = "Customer" });
}
var adminUser = manager.FindByName("adminuser");
manager.AddToRoles(adminUser.Id, new string[] { "Admin" });
}
我需要使用 FTP 来发布(无法控制)。关于如何在部署此代码并且设置数据库架构后如何运行此代码的任何建议?
我考虑过的选项:
- 我考虑过创建一个 API 端点,在调用时可以
启动此代码,但是,此端点必须允许
anonymous访问,因为它将创建第一个用户和 系统中使用的角色。然后我需要以某种方式禁用 或稍后移除此端点。 - 编写数据库脚本并包含数据,然后将其还原到 用于部署的数据库服务器。
【问题讨论】:
标签: c# entity-framework-6 asp.net-web-api2 asp.net-identity-2