当前位置:网站首页>Casbin 进行权限控制验证
Casbin 进行权限控制验证
2022-08-08 23:11:00 【Mar丶流年】
install
go get github.com/casbin/casbin/v2
配置model
权限控制主要的三要素:sub(用户),obj(资源),act(操作)
request_definition:定义请求的要素
policy_definition:定义策略的要素
role_definition:定义角色继承关系
matchers:权限匹配逻辑
policy_effect:可以对matchers匹配的结果进行再次验证
[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.act
配置policy
p代表权限,g代表管理员
alice 具备data1的read(g的subject和p的subject相同,实现了在原有的角色上添加额外的权限)和data2的read&write
xie 的权限和alice一样(角色还能继承)。由于角色的继承和分配的位置是同一个,所以你很难直接看出来这是继承角色,还是分配角色。所以一般在角色前面加上Role(如:Role::admin)
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice,data2_admin
g, xie,alice
权限验证
使用 NewEnforcer 加载 model 和 policy 得到执行者
执行者通过Enforce(sub,obj,act) 来判断是否可执行
package main
import (
"fmt"
"github.com/casbin/casbin/v2"
)
func main() {
enforcer, err := casbin.NewEnforcer("/Users/xieruixiang/go/src/good/model.conf", "/Users/xieruixiang/go/src/good/rbac_policy.csv")
if err != nil {
panic(err)
}
ok, err := enforcer.Enforce("alice", "data1", "read")
if err != nil {
panic(err)
}
fmt.Println(ok)
}
边栏推荐
猜你喜欢
【Bug解决】ValueError: Object arrays cannot be loaded when allow_pickle=False
Introduction to Qt (5) - file operation, hotkey and mouse reading (implementation of txt window)
MPLS Virtual Private Network Everywhere in Life
Hi3516 use wifi module
wps表格下拉选项怎么添加?wps表格下拉选项的添加方法
如何搭建一套自己公司的知识共享平台
机器学习建模高级用法!构建企业级AI建模流水线
wps表格怎么调整表格大小?wps表格调整表格大小的方法
(codeforce547)C-Mike and Foam(质因子+容斥原理)
Virtual router redundancy protocol VRRP - double-machine hot backup
随机推荐
Oracle 锁表,如何解锁
数组去重的几种方法
Kubernetes 资源编排系列之二: Helm 篇
bp神经网络的学习心得
树莓派wiringPi库的使用补充
用模态框 实现 注册 登陆
(codeforce547)C-Mike and Foam(质因子+容斥原理)
makefile 自动编译 目录和子目录的 C文件
主从延迟原因及解决方案
Dynamic Host Configuration Protocol DHCP (DHCPv4)
JSDay1-两数之和
机器学习之知识点(一)
(2022牛客多校四)N-Particle Arts(思维)
Modal dialog is used to implement the sign-in
如何搭建一套自己公司的知识共享平台
微信小程序项目--订单
CTFSHOW_WEB入门web213
wps备份与恢复在哪里?
2022杭电多校六 1007-Shinobu loves trip(同余方程)
2022牛客多校六 M-Z-Game on grid(动态规划)