自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不會(huì)處理鑒權(quán)?那用 Casbin 吧,快速了解入門

開發(fā) 項(xiàng)目管理
稍微大一點(diǎn)的項(xiàng)目就一定會(huì)涉及到權(quán)限管理,這個(gè)系列我們給大家介紹一個(gè)非常好用的鑒權(quán)庫(kù) casbin。

 [[431457]]

本文轉(zhuǎn)載自微信公眾號(hào)「GoLang全?!?,作者錕。轉(zhuǎn)載本文請(qǐng)聯(lián)系GoLang全棧公眾號(hào)。

稍微大一點(diǎn)的項(xiàng)目就一定會(huì)涉及到權(quán)限管理,這個(gè)系列我們給大家介紹一個(gè)非常好用的鑒權(quán)庫(kù) casbin。

它是一個(gè)跨平臺(tái)的庫(kù),支持很多種語言的鑒權(quán)。

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

光講解這個(gè)庫(kù)的 API 很顯然是枯燥的,所以我會(huì)結(jié)合 Gin,模擬實(shí)際開發(fā)中的鑒權(quán)去給大家講解他的使用。

所以我們的工程里面會(huì)用到到的庫(kù)如下:

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

配套Github代碼

很開心的告訴大家,這個(gè)系列的文章我們會(huì)把代碼開源到 Github 上,為大家學(xué)習(xí)的路上掃平一切障礙。

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

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

本文配套 tag 標(biāo)記:快速入門

快速入門

來一份入門代碼:

  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. // 統(tǒng)一錯(cuò)誤檢查 
  22. func checkError(err error)  { 
  23.  if err!=nil { 
  24.   println(err.Error()) 
  25.  } 

我定義了一個(gè)方法 checkError 來統(tǒng)一處理報(bào)錯(cuò)。

這里面涉及到兩個(gè)配置文件,分別是 model.conf 和 policy.csv 文件。

內(nèi)容如下:

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 

這兩個(gè)配置文件你現(xiàn)在就暫時(shí)先理解為 model.conf 定義了匹配規(guī)則,policy.csv 定義了權(quán)限組等權(quán)限。

具體的解釋我們會(huì)在下一篇文章詳細(xì)介紹。

直接運(yùn)行起來,你會(huì)看到控制臺(tái)輸出:

  1. 通過! 

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

沒錯(cuò) act 就表示我們的請(qǐng)求方法。

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

2025-02-26 13:00:00

SpringBootJava開發(fā)

2023-11-20 08:09:11

Pulsar鑒權(quán)topic

2025-02-27 13:00:00

SpringBoot數(shù)據(jù)鑒權(quán)代碼

2021-09-02 07:00:32

鑒權(quán)Web 應(yīng)用Cookie-sess

2021-09-07 11:20:02

binlogMySQL數(shù)據(jù)庫(kù)

2021-09-01 10:15:15

前端cookiesession

2021-08-04 08:31:10

MySQL數(shù)據(jù)庫(kù)日志

2019-05-20 14:57:35

Tomcat容器安全

2014-07-10 11:34:05

2024-01-26 14:35:03

鑒權(quán)K8sNode

2018-01-10 14:22:05

2024-05-28 08:24:18

2021-10-26 11:42:51

系統(tǒng)

2023-10-31 07:13:43

2024-10-14 11:56:50

2023-03-30 07:48:46

接口鑒權(quán)SpringBoot

2022-12-02 16:28:47

2020-08-05 14:28:32

編程程序員代碼

2020-12-28 06:20:27

OptionalTryjava

2020-12-02 08:31:47

Elasticsear
點(diǎn)贊
收藏

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