文章目录
0. 背景
Casbin是用于Golang项目的功能强大且高效的开源访问控制库。
强大通用也意味着概念和配置较多,具体到实际应用(以Gin Web框架开发)需要解决以下问题:
- 权限配置的存储,以及
增删改查
- Gin框架的中间件如何实现
经过一番摸索实践出经验,计划分为三个章节,循序渐进的介绍使用方法
1. Casbin概念介绍以及库使用
2. 使用Gorm存储Casbin权限配置以及增删改查
3.实现Gin鉴权中间件
代码地址 https://gitee.com/leobest2/gin-casbin-example
1. 核心概念
核心配置中含两部分
模型配置
以及策略配置
,给出两个示范配置,在此基础上对实际请求进行分析。
1.1 Model
模型文件,存储了请求定义(request_definition),策略定义(policy_definition),匹配规则(matchers),以及匹配的综合结果(policy_effect)
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
1.2 Policy
以下为示策略文件
policy.csv
含有两条策略,策略除了存储在文件中,还可以保存到数据库,后续中我们用到GORM Adapter
,保存到数据库中
p,leo,/api/user,GET
p,leo,/api/user,POST
1.3 实例分析
以用户
leo
通过GET
方法访问后台API:/api/user
为例
文章评论