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

不會處理鑒權?那用 Casbin 吧,快速了解入門

開發 項目管理
稍微大一點的項目就一定會涉及到權限管理,這個系列我們給大家介紹一個非常好用的鑒權庫 casbin。

 [[431457]]

本文轉載自微信公眾號「GoLang全棧」,作者錕。轉載本文請聯系GoLang全棧公眾號。

稍微大一點的項目就一定會涉及到權限管理,這個系列我們給大家介紹一個非常好用的鑒權庫 casbin。

它是一個跨平臺的庫,支持很多種語言的鑒權。

官方文檔:https://casbin.org/docs/zh-CN/overview

光講解這個庫的 API 很顯然是枯燥的,所以我會結合 Gin,模擬實際開發中的鑒權去給大家講解他的使用。

所以我們的工程里面會用到到的庫如下:

  1. go get github.com/casbin/casbin/v2 
  2. go get github.com/gin-gonic/gin 

配套Github代碼

很開心的告訴大家,這個系列的文章我們會把代碼開源到 Github 上,為大家學習的路上掃平一切障礙。

我們官方的 Github 代碼閱讀,地址如下:

  1. https://github.com/GoLangStackDev/casbin-with-mysql-go.git 

本文配套 tag 標記:快速入門

快速入門

來一份入門代碼:

  1. package main 
  2.  
  3. import ( 
  4.  "github.com/casbin/casbin/v2" 
  5.  "fmt" 
  6.  
  7. func main() { 
  8.  sub := "lili" 
  9.  obj := "/posts" 
  10.  act := "GET" 
  11.  
  12.  e,err := casbin.NewEnforcer("resources/model.conf","resources/policy.csv"
  13.  checkError(err) 
  14.  ok,err := e.Enforce(sub,obj,act) 
  15.  checkError(err) 
  16.  if ok { 
  17.   fmt.Println("通過!"
  18.  }else
  19.   fmt.Println("不通過!"
  20.  } 
  21. // 統一錯誤檢查 
  22. func checkError(err error)  { 
  23.  if err!=nil { 
  24.   println(err.Error()) 
  25.  } 

我定義了一個方法 checkError 來統一處理報錯。

這里面涉及到兩個配置文件,分別是 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 

policy.csv

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

這兩個配置文件你現在就暫時先理解為 model.conf 定義了匹配規則,policy.csv 定義了權限組等權限。

具體的解釋我們會在下一篇文章詳細介紹。

直接運行起來,你會看到控制臺輸出:

  1. 通過! 

假如此時我們把 act 改成 POST 就不能通過了。

沒錯 act 就表示我們的請求方法。

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

2025-02-26 13:00:00

SpringBootJava開發

2023-11-20 08:09:11

Pulsar鑒權topic

2021-09-07 11:20:02

binlogMySQL數據庫

2025-02-27 13:00:00

SpringBoot數據鑒權代碼

2021-08-04 08:31:10

MySQL數據庫日志

2021-09-02 07:00:32

鑒權Web 應用Cookie-sess

2021-09-01 10:15:15

前端cookiesession

2019-05-20 14:57:35

Tomcat容器安全

2024-01-26 14:35:03

鑒權K8sNode

2014-07-10 11:34:05

2018-01-10 14:22:05

2024-05-28 08:24:18

2020-12-28 06:20:27

OptionalTryjava

2020-08-05 14:28:32

編程程序員代碼

2021-10-26 11:42:51

系統

2024-10-14 11:56:50

2023-03-30 07:48:46

接口鑒權SpringBoot

2023-10-31 07:13:43

2022-12-02 16:28:47

2015-08-26 16:17:49

OpenStack OpenStack 架開源云平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97影院2 | 午夜电影福利 | 黄色免费网站在线看 | 毛片视频观看 | 国产成人av在线播放 | 国产精品一级 | 久久综合久 | 亚洲欧洲色视频 | 超碰美女在线 | 精品成人在线视频 | 国产美女特级嫩嫩嫩bbb片 | 欧美国产视频 | 伊人天堂网 | 99亚洲| 日本久久久一区二区三区 | 国产91网站在线观看 | 一级在线观看 | 亚洲精选一区 | caoporn国产精品免费公开 | 四虎精品在线 | 成人在线视频免费看 | 一级毛片观看 | 一区二区国产在线观看 | 一区二区免费视频 | 精品中文字幕一区二区三区 | 蜜桃久久| 国产高清在线精品一区二区三区 | 欧美男人天堂 | 精品一区二区三区在线观看国产 | 欧美日一区二区 | 成人影院一区二区三区 | 99精品电影 | 日韩不卡视频在线观看 | 中文字幕在线观看一区 | 亚洲一区二区三区 | 成人国产免费观看 | 久久久人成影片免费观看 | 国户精品久久久久久久久久久不卡 | 成人福利网站 | 欧美亚洲在线 | 亚洲毛片一区二区 |