微服務中如何設計一個權限受權服務

基於角色的訪問控制  (RBAC) 

  是將系統訪問限制爲受權用戶的一種方法,是圍繞角色和特權定義的與策略無關的訪問控制機制,RBAC的組件使執行用戶分配變得很簡單。前端

  在組織內部,將爲各類職務建立角色執行某些操做的權限已分配給特定角色。成員或職員(或其餘系統用戶)被分配了特定角色,而且經過這些角色分配得到執行特定系統功能所需的權限。因爲未直接爲用戶分配權限,而是僅經過其角色(一個或多個角色)獲取權限,所以,對單個用戶權限的管理就變成了簡單地爲用戶賬戶分配適當角色的問題。這簡化了常見操做,例如添加用戶或更改用戶部門。vue

RBAC定義了三個主要規則

  一、角色分配:僅當對象已選擇或分配了角色時,對象才能行使權限。git

  二、角色受權:必須爲主體受權主體的活動角色。使用上面的規則1,此規則可確保用戶只能承擔得到其受權的角色。github

  三、權限受權:僅當對象的活動角色被受權時,對象才能行使權限。使用規則1和2,此規則可確保用戶只能行使其被受權的權限。json

建立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; }
    }

角色ui

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

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

用戶spa

    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

相關文章
相關標籤/搜索