package middleware import ( "github.com/casbin/casbin/v2" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/redis" "net/http" "strings" ) type AuthorityMiddleware struct { Cbn *casbin.Enforcer Rds *redis.Redis } func NewAuthorityMiddleware() *AuthorityMiddleware { return &AuthorityMiddleware{} } func (m *AuthorityMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { //obj := r.URL.Path //act := r.Method next(w, r) } } func (m *AuthorityMiddleware) batchCheck(cbn *casbin.Enforcer, roles, act, obj string) bool { var checkReq [][]any for _, v := range strings.Split(roles, ",") { checkReq = append(checkReq, []any{v, obj, act}) } result, err := cbn.BatchEnforce(checkReq) if err != nil { logx.Errorw("Casbin enforce error", logx.Field("detail", err.Error())) return false } for _, v := range result { if v { return true } } return false }