内容简介:ABAC调用 github.com/casbin/casbin
go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin)
说明
ABAC
调用 github.com/casbin/casbin
abac_model.conf
[request_definition] r = sub, obj, act [policy_definition] p = sub, obj,act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.sub.App == r.obj.App && r.sub.Type == r.obj.Type && r.sub.Method == r.obj.Method
main.go
package main import ( "fmt" "github.com/casbin/casbin" ) type User struct { Id int UserName string Group []Group } type Group struct { Id int Name string App string // app Type string // 类型 Method string // 方法 Priority int // 优先级 } type Obj struct { App string // app Type string // 类型 Method string // 方法 } func main() { e := casbin.NewEnforcer("E:\\go-test\\test\\abac\\abac_model.conf") group1 := Group{ Name: "group1", App: "asset", Type: "aliyun", Method: "Get", Priority: 100, } group2 := Group{ Name: "group2", App: "asset", Type: "aliyun", Method: "Get", Priority: 100, } // 用户 hequan 属于 group1 , group2 user1 := User{ UserName: "hequan", Group: []Group{group1, group2}, } obj := Obj{ App: "asset", Type: "aliyun", Method: "Get", } var perms = false // 检查 用户 hequan 所有的组 是否有权限 for _, v := range user1.Group { if e.Enforce(v, obj, ""){ perms = true break } } if perms { fmt.Println("权限正常") } else { fmt.Println("没有权限") } }
结果
权限正常
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Django框架–权限代码+左侧菜单和权限应用
- 同等权限下多任职之间数据权限的实例
- 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)
- 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)
- Spring-Security权限管理框架(1)——根据角色权限登录
- Tangdao 2.0.1 发布,更新前后分离,完成基础角色权限,数据权限组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTTP/2基础教程
Stephen Ludin、Javier Garza / 罗正龙、郑维智 / 人民邮电出版社 / 2018-1 / 49.00元
让网站和应用更快速、更简洁、更稳健,从而有效提升用户体验,这无疑是众多开发者梦寐以求的。然而互联网发展日新月异,HTTP/1.1协议已经难以满足现今的需求。在众多Web性能提升方案中,HTTP/2值得尝试。 本书是HTTP/2实用指南,介绍了HTTP/2的设计初衷和新特性,以及如何才能充分利用这些特性来打造高性能网站及应用。作者用定量分析方法,对比了不同网络环境下及不同浏览器上HTTP/1.......一起来看看 《HTTP/2基础教程》 这本书的介绍吧!