我正在嘗試創建帶身份的授權。是否有可能使用Identity來保存帶枚舉參數的角色?
到目前爲止eveything正在與我在網上找到的指導方針一起工作。
但是我想修改角色的保存。我創建了一個枚舉,並將此枚舉保存到aspNetRoles表(代碼如下)。
作用被保存到用戶的方式是通過以下事項:
UserManager.AddToRole(user.Id, "Admin");
我不是一個字符串作爲第二paramater發送的粉絲,並希望派一個枚舉來代替。
這可能嗎?
我迄今爲止代碼:
修改aspnetRoles表通過添加自定義屬性:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
new public DbSet<ApplicationRole> Roles { get; set; }
}
public class ApplicationRole : IdentityRole
{
[Required]
public RoleId roleId { get; set; }
}
public enum RoleId
{
Developer = 0,
Administrator = 1,
Other = 2
}
將在startup.cs作用:
if (!roleManager.RoleExists("Developer"))
{
// first we create Admin rool
var role = new ApplicationRole();
role.Name = "Developer";
role.roleId = RoleId.Developer;
roleManager.Create(role);
//Here we create a Admin super user who will maintain the website
var user = new ApplicationUser();
user.UserName = "ra3iden";
user.Email = "[email protected]";
user.FirstName = "Myname";
user.LastName = "LastName";
string userPWD = "[email protected]";
var chkUser = UserManager.Create(user, userPWD);
//Add default User to Role Admin
if (chkUser.Succeeded)
{
var result1 = UserManager.AddToRole(user.Id, "Developer");
}
}
正如我上面我所提到的不希望擁有角色名稱屬性,我想使用枚舉,這是如何完成的?
編輯: PIC aspNetRoles的:
怎麼樣'RoleId.Developer.ToString()'呢? – DavidG
這將是一個快速修復。雖然我的意圖不完全是這樣,但如果案件只是不加硬編碼字符串,那麼這將解決問題,但如果我刪除名稱屬性entierly,只專注於保存枚舉? – ThunD3eR
那麼你的枚舉是否與角色ID匹配? – DavidG