基於角色的訪問控制 (RBAC) 是將系統訪問限製為授權用戶的一種方法,是圍繞角色和特權定義的與策略無關的訪問控制機制,RBAC的組件使執行用戶分配變得很簡單。 在組織內部,將為各種職務創建角色。執行某些操作的許可權已分配給特定角色。成員或職員(或其他系統用戶)被分配了特定角色,並且通過這些角色分配獲 ...
基於角色的訪問控制 (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