成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說說 Casbin 配置文件里的設計哲學

開發 前端
學習 casbin 的最大攔路虎就是他的兩個配置文件,很多新手完全是蒙圈的。這里我們以本地化權限控制為例,不直接上數據庫化的,便于大家調試理解。

學習 casbin 的最大攔路虎就是他的兩個配置文件,很多新手完全是蒙圈的。

這里我們以本地化權限控制為例,不直接上數據庫化的,便于大家調試理解。

我們在使用 casbin 時需要用到兩個配置文件,分別是 model.conf 和 policy.csv。

他們分別記錄了,權限匹配規則也叫模型定義文件 model.conf ,以及權限列表也叫策略文件 policy.csv。

一、模型定義文件 model.conf

  1. [request_definition] 
  2. r = sub, obj, act 
  3.  
  4. [policy_definition] 
  5. p = sub, obj, act 
  6.  
  7. [role_definition] 
  8. g = _, _ 
  9.  
  10. [policy_effect] 
  11. e = some(where (p.eft == allow)) 
  12.  
  13. [matchers] 
  14. m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act 

簡單解釋下這些定義的意義:

[request_definition]

這是關于請求的一些定義,分別定義了:

訪問實體 (Subject),訪問資源 (Object) 和訪問方法 (Action)

這個很好理解:我們一般描述一條請求大都會這么描述:

哪個用戶用啥方法請求了某個資源

這里的:

哪個用戶→就是 實體 (Subject)

啥方法→就是 訪問方法 (Action)

某個資源 → 訪問資源 (Object)

比如:admin 用戶使用 GET 方法訪問 /user/list 接口

[policy_definition]

這是是對策略的定義。

我們還有一個配置文件 policy.csv ,這里就是約束里面定義些什么字段。

我們一般描述一個權限是這樣的:

誰擁有對某個資源的啥權限

這里的:

誰→就是 實體 (Subject)

啥權限→就是 訪問方法 (Action)

某個資源 → 訪問資源 (Object)

比如:admin 組擁有 /user/list 接口的 GET 權限

[policy_effect]

這是對策略的定義。

我們在 request_definition 和 policy_definition 定義的這些資源,怎么去匹配。

不同的需求可以寫成不同的方式,這里我們寫成 RBAC 權限控制的經典方案:

  1. e = some(where (p.eft == allow)) 

p.eft 代表決策結果。

其意思就是:如果存在一個匹配的策略規則就通過。

[role_definition]

這是角色的定義。

_, _ 表示角色繼承關系的前項和后項,即前項繼承后項角色的權限。

就像 編輯 權限只有對文章的讀寫權限,管理員擁有 編輯 的全部權限,這種繼承關系。

[matchers]

請求和策略的匹配規則。

先來解釋下:

  1. r.obj == p.obj && r.act == p.act 

這段就是在匹配的時候,請求傳過來的 obj 和 我們策略組里面的 obj 要匹配到,同樣是 act 也是同樣。

最后來解釋:

  1. g(r.sub, p.sub) 

g 所關聯的是角色定義,所以他要滿足我們的前項繼承后項角色的權限。

二、策略文件 policy.csv

  1. p, member, /depts, GET 
  2. p, member, /depts/:id, GET 
  3.  
  4. p, admin, /depts, POST 
  5. p, admin, /depts/:id, PUT 
  6. p, admin, /depts/:id, DELETE 
  7.  
  8. g, admin, member 
  9. g, super, admin 
  10. g, lili, member 

一看到 .csv 文件,就應該能想到,他是一種特殊的文件,我們很多從數據庫里面導出數據就會導出這個格式的文件。

所以這部分的內容后期也可以從數據庫里面去讀取。

這個文件很好理解,結合上一個模型文件:

p 是定義資源的策略的

簡而言之:誰擁有對某個資源的啥權限

g 是定義權限組的

 

簡而言之:誰繼承誰的權限

 

責任編輯:武曉燕 來源: GoLang全棧
相關推薦

2022-01-26 00:01:00

Casbin配置權限

2025-04-08 00:00:00

@AsyncSpring異步

2024-11-19 15:13:02

2023-12-27 18:16:39

MVCC隔離級別幻讀

2025-04-16 00:00:01

JWT客戶端存儲加密令

2024-03-05 10:33:39

AOPSpring編程

2024-08-22 10:39:50

@Async注解代理

2024-05-30 08:04:20

Netty核心組件架構

2024-02-20 08:13:35

類加載引用Class

2024-07-31 08:28:37

DMAIOMMap

2024-03-14 14:56:22

反射Java數據庫連接

2021-11-25 10:18:42

RESTfulJava互聯網

2024-12-06 07:00:00

2024-03-11 18:18:58

項目Spring線程池

2024-03-22 06:56:24

零拷貝技術數據傳輸數據拷貝

2020-07-02 07:52:11

RedisHash映射

2021-08-09 07:47:40

Git面試版本

2024-09-20 08:36:43

零拷貝數據傳輸DMA

2024-02-29 16:49:20

volatileJava并發編程

2024-08-29 16:30:27

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人欧美一区二区三区在线播放 | 久久精品亚洲国产 | 一区二区三区国产视频 | 色偷偷人人澡人人爽人人模 | 色婷婷综合久久久中字幕精品久久 | 国产极品粉嫩美女呻吟在线看人 | 亚洲精品视频在线 | 特级毛片www| 视频三区| 热久久性 | 中国大陆高清aⅴ毛片 | 婷婷色国产偷v国产偷v小说 | 日韩高清一区二区 | 午夜精品久久久久久久久久久久久 | 天天曰夜夜操 | 亚洲va欧美va天堂v国产综合 | 欧美不卡一区二区三区 | 国产精品99久久久久久久vr | 国产精品精品视频一区二区三区 | 粉嫩一区二区三区性色av | 国产精品美女 | 犬夜叉在线观看 | а天堂中文最新一区二区三区 | 超碰导航| 中文字幕免费 | 久久久精彩视频 | 国产精品久久777777 | 一区二区精品视频 | 国产一在线观看 | 日韩毛片网 | 天堂av免费观看 | 色综合久久久久 | 中文字幕1区2区3区 日韩在线视频免费观看 | 成人免费看片又大又黄 | 欧美人成在线视频 | 99国产精品久久久久久久 | 密色视频 | 国产欧美日韩精品在线观看 | 激情毛片| 中文字幕亚洲一区二区三区 | 精品久久国产老人久久综合 |