- 安装
go get github.com/casbin/casbin/v2
- 安装 ORM 适配器,采用DB方式策略
- 开发:
添加对应的model 文件
编写对应的Casbin 文件
import ( "github.com/astaxie/beego/logs" beegoormadapter "github.com/casbin/beego-orm-adapter/v2" "github.com/casbin/casbin/v2" ) const ( RBAC_CONF = "conf/rbac_model.conf" RBAC_DOMAIN_CONF = "conf/rbac_domain_model.conf" ) var ( Enforcer *casbin.Enforcer ) func CasbinIinit(sqlConn string) { //不能再使用 default a, err := beegoormadapter.NewAdapter("casbin", "mysql", sqlConn) if err != nil { logs.Error(err) } Enforcer, err = casbin.NewEnforcer(RBAC_DOMAIN_CONF, a) if err != nil { logs.Error(err) } err = Enforcer.LoadPolicy() if err != nil { panic(err) } }
注意事项:
-
casbin_rule 文件,不用自己创建,casbin 模块中会自动创建
-
BaseModel 中,已经使用了 default 名字注册了数据库,虽然是同一个数据库,但 casbin 这边 NewAdapter 时,不能使用default,必须换一个名字,不然会报错
-
若数据库中有casbin_rule 表,并且表中有包含不符合该model 的数据,运行是就会报错