我們常常開發程式帳號登入,通常還會做權限功能,這邊很常開發會用角色(Role)
這個東西,去做權限劃分,有時候我們需要更細,但系統不一定會做到這樣,但有沒有常見規劃權限方法。
常見權限方法
之前看到 RBAC
這個名詞是在 Kubernetes 那邊看到,那時候還沒有深入了解設計理念,最近在看 .Net Core Identity
文章,看到這個框架有做這個非常方便東西,可以瞭解這個是什麼用途。
RBAC
以角色為基礎的存取控制[1][2](英語:Role-based access control,RBAC),是資訊安全領域中,一種較新且廣為使用的存取控制機制,其不同於強制存取控制以及自由選定存取控制[3]直接賦予使用者權限,而是將權限賦予角色。
以角色為基礎的存取控制模型是一套較強制存取控制以及自由選定存取控制更為中性且更具靈活性的存取控制技術。
參考: 以角色為基礎的存取控制 - 維基百科,自由的百科全書
更多可以看Role-Based Access Control (RBAC). 作者:銀伶 | by I.S. BLOG | Medium。
CBAC
Claim 動詞則有宣稱,聲稱, 主張, 自稱, 指控, 認領,索賠等意思
名詞則有權利 , 要求權和聲明等
Claims-based 則是一個專有詞,代表基於聲明的認證(Claims-based identity)
用於Google,Facebook,Microsoft等都有此機制的概念導入
參考: ASP.NET MVC第014天_ASP.NET Identity使用筆記_使用者登入_Claims-based identity理解
網路上比較少介紹 CBAC
,簡單它可以分更細權限,這邊帳號可以設定特定角色,但是有時候有例外,像是帳號想把它加上權限上去,透過CBAC
就可以設定。但注意 Claim不是只有套用在帳號上面,也可以套用帳號上面。
建立角色
GIT: 建立角色 · malagege/NetCoreAuthSample@578bdd6
RoleManager 可以簡單對 Role 做 CRUD。會新增到 AspNetRoles 資料表。
- Controller 注入 RoleManager
- 建立ModelView
- Controller 建立Role
- View 設定
簡單步驟跟之前差不多