using Microsoft.AspNet.Identity;
public ActionResult AddRole(String name)
{
using (var roleManager = new RoleManager<IdentityRole>(
new RoleStore<IdentityRole>(new IdentityDbContext())))
{
if (!roleManager.RoleExists(name))
{
roleManager.Create(new IdentityRole(name));
}
}
}
另一種方法:
1、在 App_Start\IdentityConfig.cs 文件中配置應用程序角色管理器
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore) : base(roleStore)
{
}
public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
{
return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
}
}
2、在 App_Start\Startup.Auth.cs 文件中添加app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
public void ConfigureAuth(IAppBuilder app)
{
// 配置數據庫上下文、用戶管理器和登錄管理器,以便為每個請求使用單個實例
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
......
}
3、在需要用的地方,輸入以下代碼,用於創建RoleManager
實例
private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
get
{
return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
}
private set
{
_roleManager = value;
}
}
這樣就可以使用以下代碼創建、編輯和刪除角色了。
var result = await RoleManager.CreateAsync(new IdentityRole(name));
var result = await RoleManager.UpdateAsync(role);
var result = await RoleManager.DeleteAsync(role);