fix casbin Context canceled

This commit is contained in:
yxh 2023-09-27 22:33:18 +08:00
parent aae69b5e8f
commit 9052d2dac4

View File

@ -11,8 +11,6 @@ import (
"sync" "sync"
) )
type cabinImpl struct{}
type adapterCasbin struct { type adapterCasbin struct {
Enforcer *casbin.SyncedEnforcer Enforcer *casbin.SyncedEnforcer
EnforcerErr error EnforcerErr error
@ -20,7 +18,6 @@ type adapterCasbin struct {
} }
var ( var (
cb = cabinImpl{}
once sync.Once once sync.Once
en *casbin.SyncedEnforcer en *casbin.SyncedEnforcer
enErr error enErr error
@ -28,20 +25,23 @@ var (
// CasbinEnforcer 获取adapter单例对象 // CasbinEnforcer 获取adapter单例对象
func CasbinEnforcer(ctx context.Context) (enforcer *casbin.SyncedEnforcer, err error) { func CasbinEnforcer(ctx context.Context) (enforcer *casbin.SyncedEnforcer, err error) {
ac := cb.newAdapter(ctx) ac := newAdapter(ctx)
enforcer = ac.Enforcer enforcer = ac.Enforcer
err = ac.EnforcerErr err = ac.EnforcerErr
return return
} }
// 初始化adapter操作 // 初始化adapter操作
func (s *cabinImpl) newAdapter(ctx context.Context) (a *adapterCasbin) { func newAdapter(ctx context.Context) (a *adapterCasbin) {
a = new(adapterCasbin) a = new(adapterCasbin)
a.ctx = ctx
once.Do(func() { once.Do(func() {
en, enErr = initPolicy(ctx, a) en, enErr = initPolicy(ctx, a)
}) })
if enErr == nil && en != nil {
en.SetAdapter(a)
}
a.Enforcer, a.EnforcerErr = en, enErr a.Enforcer, a.EnforcerErr = en, enErr
a.ctx = ctx
return return
} }