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

摘要:
}=0;/// 菜单名称///<[Column(TypeName=“tinyint(4)”)]publicLevel{get;///菜单权限(list<///Menu icon////<///唯一ID//<///角色名称///lt;[StringLength(20)][必需]publicstringName{get;
基于角色的访问控制  (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的功能

登陆

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

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

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

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

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

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

最后安利

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

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

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

ketchup 交流群:592407137

免责声明:文章转载自《微服务中如何设计一个权限授权服务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在windows上用netsh动态配置端口转发resharper 自定义代码模板(code snippet)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RequestBodyAdvice和ResponseBodyAdvice详解,@ControllerAdvice注解

一、源码解析 这是spring 4.2新加的两个接口 1、RequestBodyAdvice public interface RequestBodyAdvice { boolean supports(MethodParameter var1, Type var2, Class<? extends HttpMessageConverter&l...

C# 获取config文件 实体转换

随着项目的扩展,单独的key,value配置文件已经不能满足需求了 这里需要自定义配置节点,例如 1 <!--自定义 具体实体类配置问节点信息--> 2 <School Name="红旗小学" Number="1008" Address="北京市,西城区……"></School> 当然,这样的节点可以有多重获取...

Chrome浏览器在Windows8/8.1下显示模糊的解决办法

  刚刚换了一台新电脑,安装完Windows 8.1,屏幕分辨率被自动设置为1920 X 1080,打开Chrome浏览器却发现内容显示非常模糊,不论如何改变Chrome的设置均没有效果,开启或关闭Chrome的硬件加速功能也无济于事。不光Chrome如此,许多其它应用程序和对话框中的文字也显示很模糊。   其实这是由于DPI缩放所引起的,可通过调整DPI...

Apache用户认证方法汇总(转载)

简介:这是Apache用户认证方法汇总(转载)的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。 frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=322022' scrolling='no'> Apache用户认证方法汇总 一.基本的Apac...

iframe用法总结

<p><iframe>是框架的一种形式,也比较常用到。 </p><div class="blogstory"><p><span style="font-size:18px;"><span style="color:#0000ff;"><span style="font...

PhpStorm快捷键设置/个性化设置,

#常用快捷键 设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“Eclipse” -> 然后“Copy”一份 -> 再个性化设置(自己习惯的)快捷键 快捷键 功能 Ctrl + / 双斜杠注释 Ctrl + Shilft + / 块注释 Alt...