• 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)        角色管理

  • 相关阅读:
    PHP 创建二叉树镜像(交换左右子树)
    PHP 使用二叉树的先序和中序遍历结果构造二叉树
    PHP 不用求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
    PHP 不用加减乘除做加法
    PHP 跳台阶问题
    PHP 输入一个整数,求该整数的二进制表达中有多少个1
    PHP 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来
    PHP 查找链表倒数第i个节点
    .Net/C# 实现: FlashFXP 地址簿中站点密码的加解密算法
    johnsuna 的收藏精品
  • 原文地址:https://www.cnblogs.com/mlemon/p/4304585.html
Copyright © 2020-2023  润新知