关于casbin

本文深入探讨Casbin权限控制系统,涵盖ACL、RBAC、ABAC模型应用,介绍其核心DSL及PERMmetamodel概念,展示Echo框架与gorm数据库适配实践,解析请求、策略、匹配与效果模型,提供Casbin结合gorm和gin的使用示例。

关于casbin

1.支持 ACL,RBAC,ABAC 等常用的访问控制模型

Casbin 的核心是一套基于 PERM metamodel (Policy, Effect, Request, Matchers) 的 DSL。

Policy: 定义权限的规则

Effect: 定义组合多个Policy 后是允许还是拒绝(allow/deny)

Request: 访问的请求,可以理解为谁想访问什么资源

Matcher:判断Request 是否满足Policy ,返回true或false

文档地址:https://casbin.org/docs/zh-CN/overview

2.Echo支持casbin配置,cabin支持gorm的适配
import (
  "github.com/casbin/casbin"
  casbin_mw "github.com/labstack/echo-contrib/casbin"
)

e := echo.New()
enforcer, err := casbin.NewEnforcer("casbin_auth_model.conf", "casbin_auth_policy.csv")
e.Use(casbin_mw.Middleware(enforcer))
2.1支持自定义配置
e := echo.New()
ce := casbin.NewEnforcer("casbin_auth_model.conf", "")
ce.AddRoleForUser("alice", "admin")
ce.AddPolicy(...)
e.Use(casbin_mw.MiddlewareWithConfig(casbin_mw.Config{
  Enforcer: ce,
}))
3.casbin配置简单,实现更简单

Request 请求
定义了请求参数。一个基本的请求是一个元组对象,至少包含subject(访问实体), object(访问的资源)和 action(访问方法)。

r={sub, obj,act}

它其实就是定义了传入访问控制匹配函数的参数名和顺序。

Policy 策略
定义访问策略的模型。其实就是定义Policy规则文档中各字段的名称和顺序。

p={sub, obj, act} 或 p={sub, obj, act, eft}

注意:如果不定义 eft(策略结果),那么将不会去读策略文件中的结果字段,并将匹配的策略结果都默认为allow。

Matchers 匹配规则
Request和Policy的匹配规则。
例如: m = r.sub == p.sub && r.act == p.act && r.obj == p.obj
这条简单又常见的匹配规则的意思就是,请求的参数(实体、资源和方法)都相等即在策略中能找到,那么返回策略结果(p.eft)。策略结果会保存在p.eft中。

Effect
用于将给定请求与最终结果匹配的策略组合/减少的策略的模型。可以理解为,对Matchers匹配后的结果再进行一次逻辑组合判断的模型。
例如:e = some(where(p.eft == allow))
这句的意思是指,如果匹配策略结果p.eft 存在(some) allow的结果,那么最终结果就为 真
再看个例子:
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))
这个例子组合的逻辑含义是:如果有匹配出结果为alllow的策略并且没有匹配出结果为deny的策略则结果为真,换句话说,就是匹配的策略都为allow时才为真,如果有任何deny,都为假 (更简单的说当allow和deny同时存在时,deny优先)

# Request definition
[request_definition]
r = sub, obj, act

# Policy definition
[policy_definition]
p = sub, obj, act, eft # 这里我们定义了eft,不使用默认值

# Policy effect
[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny)) # 这里使用了deny优先

# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act #最简单的匹配规则。请求的参数与策略参数一致时获得策略结果
4.casbin+gorm+gin使用示例

https://www.cnblogs.com/Mail-maomao/p/11951482.html

相关链接

https://echo.labstack.com/middleware/casbin-authhttps://casbin.org/docs/en/syntax-for-modelshttps://casbin.org/docs/zh-CN/adaptershttps://www.jianshu.com/p/aa1ce4932fda

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源码改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值