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

面試官:說(shuō)說(shuō) Casbin 配置文件里的設(shè)計(jì)哲學(xué)

開(kāi)發(fā) 前端
學(xué)習(xí) casbin 的最大攔路虎就是他的兩個(gè)配置文件,很多新手完全是蒙圈的。這里我們以本地化權(quán)限控制為例,不直接上數(shù)據(jù)庫(kù)化的,便于大家調(diào)試?yán)斫狻?/div>

學(xué)習(xí) casbin 的最大攔路虎就是他的兩個(gè)配置文件,很多新手完全是蒙圈的。

這里我們以本地化權(quán)限控制為例,不直接上數(shù)據(jù)庫(kù)化的,便于大家調(diào)試?yán)斫狻?/p>

我們?cè)谑褂?casbin 時(shí)需要用到兩個(gè)配置文件,分別是 model.conf 和 policy.csv。

他們分別記錄了,權(quán)限匹配規(guī)則也叫模型定義文件 model.conf ,以及權(quán)限列表也叫策略文件 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 

簡(jiǎn)單解釋下這些定義的意義:

[request_definition]

這是關(guān)于請(qǐng)求的一些定義,分別定義了:

訪問(wèn)實(shí)體 (Subject),訪問(wèn)資源 (Object) 和訪問(wèn)方法 (Action)

這個(gè)很好理解:我們一般描述一條請(qǐng)求大都會(huì)這么描述:

哪個(gè)用戶用啥方法請(qǐng)求了某個(gè)資源

這里的:

哪個(gè)用戶→就是 實(shí)體 (Subject)

啥方法→就是 訪問(wèn)方法 (Action)

某個(gè)資源 → 訪問(wèn)資源 (Object)

比如:admin 用戶使用 GET 方法訪問(wèn) /user/list 接口

[policy_definition]

這是是對(duì)策略的定義。

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

我們一般描述一個(gè)權(quán)限是這樣的:

誰(shuí)擁有對(duì)某個(gè)資源的啥權(quán)限

這里的:

誰(shuí)→就是 實(shí)體 (Subject)

啥權(quán)限→就是 訪問(wèn)方法 (Action)

某個(gè)資源 → 訪問(wèn)資源 (Object)

比如:admin 組擁有 /user/list 接口的 GET 權(quán)限

[policy_effect]

這是對(duì)策略的定義。

我們?cè)?request_definition 和 policy_definition 定義的這些資源,怎么去匹配。

不同的需求可以寫成不同的方式,這里我們寫成 RBAC 權(quán)限控制的經(jīng)典方案:

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

p.eft 代表決策結(jié)果。

其意思就是:如果存在一個(gè)匹配的策略規(guī)則就通過(guò)。

[role_definition]

這是角色的定義。

_, _ 表示角色繼承關(guān)系的前項(xiàng)和后項(xiàng),即前項(xiàng)繼承后項(xiàng)角色的權(quán)限。

就像 編輯 權(quán)限只有對(duì)文章的讀寫權(quán)限,管理員擁有 編輯 的全部權(quán)限,這種繼承關(guān)系。

[matchers]

請(qǐng)求和策略的匹配規(guī)則。

先來(lái)解釋下:

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

這段就是在匹配的時(shí)候,請(qǐng)求傳過(guò)來(lái)的 obj 和 我們策略組里面的 obj 要匹配到,同樣是 act 也是同樣。

最后來(lái)解釋:

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

g 所關(guān)聯(lián)的是角色定義,所以他要滿足我們的前項(xiàng)繼承后項(xiàng)角色的權(quán)限。

二、策略文件 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 文件,就應(yīng)該能想到,他是一種特殊的文件,我們很多從數(shù)據(jù)庫(kù)里面導(dǎo)出數(shù)據(jù)就會(huì)導(dǎo)出這個(gè)格式的文件。

所以這部分的內(nèi)容后期也可以從數(shù)據(jù)庫(kù)里面去讀取。

這個(gè)文件很好理解,結(jié)合上一個(gè)模型文件:

p 是定義資源的策略的

簡(jiǎn)而言之:誰(shuí)擁有對(duì)某個(gè)資源的啥權(quán)限

g 是定義權(quán)限組的

 

簡(jiǎn)而言之:誰(shuí)繼承誰(shuí)的權(quán)限

 

責(zé)任編輯:武曉燕 來(lái)源: GoLang全棧
相關(guān)推薦

2022-01-26 00:01:00

Casbin配置權(quán)限

2024-11-19 15:13:02

2025-04-08 00:00:00

@AsyncSpring異步

2023-12-27 18:16:39

MVCC隔離級(jí)別幻讀

2025-04-16 00:00:01

JWT客戶端存儲(chǔ)加密令

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程

2024-05-30 08:04:20

Netty核心組件架構(gòu)

2024-02-20 08:13:35

類加載引用Class

2024-03-14 14:56:22

反射Java數(shù)據(jù)庫(kù)連接

2021-11-25 10:18:42

RESTfulJava互聯(lián)網(wǎng)

2024-07-31 08:28:37

DMAIOMMap

2024-12-06 07:00:00

2024-03-11 18:18:58

項(xiàng)目Spring線程池

2020-07-02 07:52:11

RedisHash映射

2021-08-09 07:47:40

Git面試版本

2024-03-22 06:56:24

零拷貝技術(shù)數(shù)據(jù)傳輸數(shù)據(jù)拷貝

2024-09-20 08:36:43

零拷貝數(shù)據(jù)傳輸DMA

2024-02-29 16:49:20

volatileJava并發(fā)編程

2024-08-29 16:30:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美日韩中文在线 | 中文字幕精品一区 | av福利网 | 欧美一区二区在线免费观看 | 91精品国产91久久久久久 | 成人一区av| 青青青伊人 | 日韩在线视频免费观看 | av中文天堂 | 精品国产乱码久久久久久丨区2区 | 日本一区二区三区在线观看 | 久久久久久亚洲精品 | 91久久国产综合久久91精品网站 | 亚洲国产欧美国产综合一区 | 亚洲嫩草| 精品国产99 | 视频在线一区二区 | 91精产国品一二三区 | 一区二区三区精品视频 | 激情三区 | 欧洲av在线| 精品国产一区二区国模嫣然 | 国产精品毛片久久久久久 | 超碰在线97国产 | 欧美偷偷 | 男女视频在线观看网站 | 亚洲国产视频一区二区 | 美女黄色在线观看 | 日韩播放| 亚洲3p| 精品国产乱码久久久久久丨区2区 | 久久免费资源 | 一级毛片网 | 亚洲视频二 | 极品销魂美女一区二区 | 天天干亚洲 | 精品无码久久久久久国产 | 韩日一区 | 午夜影院在线观看 | 国产高清自拍视频在线观看 | 亚洲欧美bt |