From 6da8cafb6f9bb6b1f58c529b5c961c46c3f82dc4 Mon Sep 17 00:00:00 2001 From: vlong Date: Thu, 10 Jul 2025 18:18:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20goframe=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=AF=BB=E5=86=99=E5=88=86=E7=A6=BB=E5=90=8E,?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/internal/library/casbin/enforcer.go | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/internal/library/casbin/enforcer.go b/server/internal/library/casbin/enforcer.go index c9ff2dd..f39e108 100644 --- a/server/internal/library/casbin/enforcer.go +++ b/server/internal/library/casbin/enforcer.go @@ -16,6 +16,7 @@ import ( "github.com/casbin/casbin/v2" "github.com/casbin/casbin/v2/model" _ "github.com/gogf/gf/contrib/drivers/mysql/v2" + "github.com/gogf/gf/v2/container/gvar" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gfile" "github.com/gogf/gf/v2/os/gres" @@ -35,7 +36,7 @@ var Enforcer *casbin.Enforcer // InitEnforcer 初始化 func InitEnforcer(ctx context.Context) { var ( - link = g.Cfg().MustGet(ctx, "database.default.link") + link = getDbLink(ctx) a, err = NewAdapter(link.String()) ) @@ -70,6 +71,26 @@ func InitEnforcer(ctx context.Context) { loadPermissions(ctx) } +// GetDbLink 获取数据库链接 +func getDbLink(ctx context.Context) *gvar.Var { + + link := g.Cfg().MustGet(ctx, "database.default") + //读写分离 + if !link.IsSlice() { + return g.Cfg().MustGet(ctx, "database.default.link") + } + + for _, v := range link.Array() { + // 只获取主库 + val := v.(map[string]interface{}) + if val["role"] == "master" { + return gvar.New(val["link"]) + } + } + return gvar.New("database.default.0.link") + +} + func loadPermissions(ctx context.Context) { type Policy struct { Key string `json:"key"`