package middleware import ( "fmt" "github.com/casbin/casbin/v2" "github.com/gin-gonic/gin" "log" ) func CasbinACL(c *gin.Context) { roleId, _ := c.Get("role_id") sub := fmt.Sprintf("%s_%d", "role", int(roleId.(float64))) obj := c.Request.RequestURI act := c.Request.Method e, err := casbin.NewEnforcer("config/model.conf", "config/policy.csv") log.Println(sub, obj, act, err) ok, err := e.Enforce(sub, obj, act) if err != nil { c.JSON(200, gin.H{ "code": 403, "msg": "没有权限:" + err.Error(), }) c.Abort() } if !ok { c.JSON(200, gin.H{ "code": 403, "msg": fmt.Sprintf("没有权限:%s,%s,%s", sub, obj, act), }) c.Abort() } }