微服务中如何设计一个权限授权服务

基于角色的访问控制  (RBAC)

是将系统访问限制为授权用户的一种方法,是围绕角色和特权定义的与策略无关的访问控制机制, RBAC的组件 使执行用户分配变得很简单。

组织内部, 将为各种职务创建 角色 执行某些操作的权限已分配给特定角色。 成员或职员(或其他系统用户)被分配了特定角色,并且通过这些角色分配获得执行特定系统功能所需的权限。 由于未直接为用户分配权限,而是仅通过其角色(一个或多个角色)获取权限,因此,对单个用户权限的管理就变成了简单地为用户帐户分配适当角色的问题。 这简化了常见操作,例如添加用户或更改用户部门。

RBAC定义了三个主要规则

1、 角色分配:仅当对象已选择或分配了角色时,对象才能行使权限。

2、 角色授权:必须为主体授权主体的活动角色。 使用上面的规则1,此规则可确保用户只能承担获得其授权的角色。

3、 权限授权:仅当对象的活动角色被授权时,对象才能行使权限。 使用规则1和2,此规则可确保用户只能行使其被授权的权限。

创建RBAC的模型

菜单

  public class SysMenu
    {
        /// <summary>
        ///     父级
        /// </summary>
        public int ParentId { get; set; } = 0;

        /// <summary>
        ///     菜单名称
        /// </summary>
        [StringLength(20)]
        public string Name { get; set; }

        /// <summary>
        ///     菜单地址
        /// </summary>
        [StringLength(20)]
        [Required]
        public string Url { get; set; }

        /// <summary>
        ///     层级
        /// </summary>
        [Column(TypeName = "tinyint(4)")]
        public int Level { get; set; } = 1;

        /// <summary>
        ///     菜单权限(list<int /> json)
        /// </summary>
        [StringLength(100)]
        public string Operates { get; set; }

        /// <summary>
        ///     排序
        /// </summary>
        public int Sort { get; set; }

        /// <summary>
        /// 菜单图标
        /// </summary>
        public string Icon { get; set; }        
    }

功能

  public class SysOperate
    {
        /// <summary>
        ///     按钮名称
        /// </summary>
        [StringLength(20)]
        [Required]
        public string Name { get; set; }

        /// <summary>
        ///     备注
        /// </summary>
        [StringLength(int.MaxValue)]
        public string Remark { get; set; }

        /// <summary>
        /// 唯一标识
        /// </summary>
        [Required]
        public int Unique { get; set; }
    }

角色

  public class SysRole 
    {
        /// <summary>
        ///     角色名称
        /// </summary>
        [StringLength(20)]
        [Required]
        public string Name { get; set; }

        /// <summary>
        ///     备注
        /// </summary>
        [StringLength(int.MaxValue)]
        public string Remark { get; set; }
    }

用户

    public class SysUser
    {
        /// <summary>
        ///     角色id
        /// </summary>
        public int RoleId { get; set; }

        /// <summary>
        ///     用户名
        /// </summary>
        [StringLength(32)]
        [Required]
        public string UserName { get; set; }

        /// <summary>
        ///     密码
        /// </summary>
        [StringLength(500)]
        [Required]
        public string Password { get; set; }
    }

微服务中让它成为一个授权权限服务

在日常工作中,总会有很多系统要做,每个系统都要一套完整的权限功能,有现成的直接拿来粘贴复制,没有现成的又要浪费很多时间去设计实现它。 如果有这样一个服务,我们可以节省很多不必要的粘贴复制操作,节省很多时间。

于是 ketchup.zero 这样一个服务就诞生了。它是基于ketchu微服务框架来实现的一个权限授权服务,基本可以满足我们日常工作的的权限需求

服务的前端是基于vue的模板d2admin 开发的。

ketchup.zero的功能

登陆

微服务中如何设计一个权限授权服务

面板 微服务中如何设计一个权限授权服务

用户配置角色 微服务中如何设计一个权限授权服务

菜单设置拥有那些权限 微服务中如何设计一个权限授权服务

权限/功能/按钮 管理 微服务中如何设计一个权限授权服务

角色设置权限 微服务中如何设计一个权限授权服务

最后安利

如果它对你有帮助,请给一波start

服务 ketchup.zero 源码地址: https://github.com/simple-gr/ketchup.zero

微服务框架 ketchup 源码地址: https://github.com/simple-gr/ketchup

ketchup 交流群:592407137

原文 

http://www.cnblogs.com/alangur/p/13187053.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 微服务中如何设计一个权限授权服务

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址