您现在的位置是:亿华云 > 应用开发
不会处理鉴权?那用 Casbin 吧,快速了解入门
亿华云2025-10-04 03:43:00【应用开发】6人已围观
简介本文转载自微信公众号「GoLang全栈」,作者锟。转载本文请联系GoLang全栈公众号。稍微大一点的项目就一定会涉及到权限管理,这个系列我们给大家介绍一个非常好用的鉴权库 casbin。它是一个跨平台
本文转载自微信公众号「GoLang全栈」,不会吧快作者锟。处理转载本文请联系GoLang全栈公众号。鉴权
稍微大一点的那用项目就一定会涉及到权限管理,这个系列我们给大家介绍一个非常好用的速解鉴权库 casbin。
它是入门一个跨平台的库,支持很多种语言的不会吧快鉴权。
官方文档:https://casbin.org/docs/zh-CN/overview
光讲解这个库的处理 API 很显然是枯燥的,源码下载所以我会结合 Gin,鉴权模拟实际开发中的那用鉴权去给大家讲解他的使用。
所以我们的速解工程里面会用到到的库如下:
go get github.com/casbin/casbin/v2 go get github.com/gin-gonic/gin配套Github代码
很开心的告诉大家,这个系列的入门文章我们会把代码开源到 Github 上,为大家学习的不会吧快路上扫平一切障碍。
我们官方的处理 Github 代码阅读,地址如下:
https://github.com/GoLangStackDev/casbin-with-mysql-go.git本文配套 tag 标记:快速入门
快速入门
来一份入门代码:
package main import ( "github.com/casbin/casbin/v2" "fmt" ) func main() { sub := "lili" obj := "/posts" act := "GET" e,鉴权err := casbin.NewEnforcer("resources/model.conf","resources/policy.csv") checkError(err) ok,err := e.Enforce(sub,obj,act) checkError(err) if ok { fmt.Println("通过!云服务器") }else{ fmt.Println("不通过!") } } // 统一错误检查 func checkError(err error) { if err!=nil { println(err.Error()) } }我定义了一个方法 checkError 来统一处理报错。
这里面涉及到两个配置文件,分别是 model.conf 和 policy.csv 文件。
内容如下:
model.conf
[request_definition] r = sub, obj, act [policy_definition] p = sub, obj, act [role_definition] g = _, _ [policy_effect] e = some(where (p.eft == allow)) [matchers] m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.actpolicy.csv
p, member, /posts, GET p, member, /posts/:id, GET p, admin, /posts, POST p, admin, /posts/:id, PUT p, admin, /posts/:id, DELETE g, admin, member g, super, admin g, lili, member这两个配置文件你现在就暂时先理解为 model.conf 定义了匹配规则,policy.csv 定义了权限组等权限。
具体的解释我们会在下一篇文章详细介绍。
直接运行起来,你会看到控制台输出:
通过!假如此时我们把 act 改成 POST 就不能通过了。
没错 act 就表示我们的请求方法。
亿华云计算很赞哦!(97)
相关文章
- 域名和网址一样吗?域名和网址有什么区别?
- 关系型、非关系型数据库存储选型盘点大全
- Java不支持协程?那是你不知道Quasar!
- 高并发+海量数据下如何实现系统解耦?「下」
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 如何保障 MySQL 和 Redis 的数据一致性?
- 这几个 TypeScript 类型,90% 的人说不出原因
- 看完还不会用TypeScript 泛型,你来找我
- 域名资源有限,好域名更是有限,但机会随时都有,这取决于我们能否抓住机会。一般观点认为,国内域名注册太深,建议优先考虑外国注册人。外国注册人相对诚实,但价格差别很大,从几美元到几十美元不等。域名投资者应抓住机遇,尽早注册国外域名。
- 大意了!一早这样搭实时数仓能少走很多弯路……