Beego 中使用casbin

  • 安装

go get github.com/casbin/casbin/v2

  • 安装 ORM 适配器,采用DB方式策略

go get github.com/casbin/beego-orm-adapter/v2

  • 开发:
  • 添加对应的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 的数据,运行是就会报错

上一篇:beego Session redis存储以及是否阻塞


下一篇:beego的常见问题