ASP.NET Identity “角色-权限”管理 3

1.1.       Role管理

参考1:ASP.NET Identity 2.0: Customizing Users and Roles

参考2:asp.net identity 2.2.0 中角色启用和基本使用(一)

1.1.1.      增加ApplicationRole

新建ApplicationRole,可参考ApplicationUser,过程如下所述。

修改IdentityModel.cs,新增ApplicationRole,继承自IdentityRole,增加属性Description。

public class ApplicationRole : IdentityRole

{

    public ApplicationRole(): base(){ }

    public ApplicationRole(string roleName)

        : this()

    {

        base.Name = roleName;

    }

 

    [Display(Name = "角色描述")]

    public string Description { get; set; }

}

1.1.2.      新增ApplicationRoleManager

修改IdentityConfig.cs,增加ApplicationRoleManager,继承自RoleManager,提供静态方法Create。

public class ApplicationRoleManager : RoleManager<ApplicationRole>

{

    public ApplicationRoleManager(IRoleStore<ApplicationRole, string> roleStore)

        : base(roleStore)

    {

    }

 

    public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)

    {

        return new ApplicationRoleManager(new RoleStore<ApplicationRole>(context.Get<ApplicationDbContext>()));

    }

}

1.1.3.      启用ApplicationRoleManager

修改Startup.Auth.cs,配置角色管理器,本质上是在MVC启动阶段注册实例,供后继的请求服务使用。

public partial class Startup

{

    // 有关配置身份验证的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=301864

    public void ConfigureAuth(IAppBuilder app)

    {

        // 配置数据库上下文、用户管理器和登录管理器,以便为每个请求使用单个实例

        app.CreatePerOwinContext(ApplicationDbContext.Create);

        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);

        app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);   //添加的角色管理器

        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

1.1.4.      新增ViewModel

新建AdminViewModel.cs,添加RoleViewModel、EditUserViewModel。

public class RoleViewModel

{

    public string Id { get; set; }

    [Required(AllowEmptyStrings = false)]

    [Display(Name = "角色名称")]

    public string Name { get; set; }

    [Display(Name="角色描述")]

    public string Description { get; set; }

}

EditUserViewModel

public class EditUserViewModel

{

    public string Id { get; set; }

    [Display(Name="用户名")]

    [Required]

    public string UserName { get; set; }

 

    [Required(AllowEmptyStrings = false)]

    [Display(Name = "电邮地址")]

    [EmailAddress]

    public string Email { get; set; }

 

    public IEnumerable<SelectListItem> RolesList { get; set; }

}

1.1.5.      添加CRUD管理功能

为Role与User管理添加相应的MVC部件,这里不再累述可参考AccountController等,为了方便可先使用MVC的支架功能,然后修改细节。

1.1.6.      运行效果

运行效果如下图所示。

1)        用户管理

2)        角色管理

原文地址:https://www.cnblogs.com/mlemon/p/4304585.html