我创建了一个网站并将其发布到Azure。现在我想保护一些带有身份验证的页面,因此我在Seed
的方法Migrations.Configuration
中添加了以下代码并将其发布到Azure。
但是,代码甚至在本地运行。表AspNetRoles
在本地和Azure SQL服务器上仍为空。我尝试使用Update-Database -Script -SourceMigration:0
生成所有SQL语句,但是没有 SQL将初始数据插入到这些Asp.Net标识表中。
// Create role
var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
const string roleName = "CanEdit";
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}
var memberEmails = Properties.Settings.Default.CanEditMembers.Split(';');
foreach (var email in memberEmails)
{
var user = userManager.FindByName(email.Trim());
if (user != null)
{
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name);
}
}
}
基本上我想将'CanEdit'插入到AspNetRoles(我猜)并将一些其他值(用户及其与角色的关联)插入到这些AspNetUser ....表中。我的部分控件已经使用属性[Authorize(Roles = "CanEdit")]
进行了装饰。