Skip to content

Commit 69aa64f

Browse files
Albort-z李展旗
andauthored
修复并发请求API情况下的读写冲突问题 (flipped-aurora#1395)
Co-authored-by: 李展旗 <lizhanqi@inke.cn>
1 parent 26e1c0d commit 69aa64f

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

server/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
77
github.com/aliyun/aliyun-oss-go-sdk v2.1.6+incompatible
88
github.com/aws/aws-sdk-go v1.42.27
9-
github.com/casbin/casbin/v2 v2.51.0
9+
github.com/casbin/casbin/v2 v2.66.0
1010
github.com/casbin/gorm-adapter/v3 v3.7.3
1111
github.com/flipped-aurora/ws v1.0.2
1212
github.com/fsnotify/fsnotify v1.4.9

server/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJm
5050
github.com/casbin/casbin/v2 v2.37.4/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg=
5151
github.com/casbin/casbin/v2 v2.51.0 h1:BC41imD9Z2coIJpELapy2h5kMT+lB4vFDTYpMhTsU4A=
5252
github.com/casbin/casbin/v2 v2.51.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg=
53+
github.com/casbin/casbin/v2 v2.66.0 h1:yyccSWtCvIs277FPIHG6pjl2IXdejRH/vpMiDuNCiEU=
54+
github.com/casbin/casbin/v2 v2.66.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg=
5355
github.com/casbin/gorm-adapter/v3 v3.7.3 h1:tp3EL3vS31dF+GX0n3QwUytQlrFOPXtOKKZ7SZtLOA8=
5456
github.com/casbin/gorm-adapter/v3 v3.7.3/go.mod h1:7mwHmC2phiw6N4gDWlzi+c4DUX7zaVmQC/hINsRgBDg=
5557
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=

server/service/system/sys_casbin.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ package system
22

33
import (
44
"errors"
5+
"strconv"
6+
"sync"
7+
58
"github.com/casbin/casbin/v2"
69
"github.com/casbin/casbin/v2/model"
710
gormadapter "github.com/casbin/gorm-adapter/v3"
8-
"github.com/flipped-aurora/gin-vue-admin/server/global"
9-
"github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
1011
_ "github.com/go-sql-driver/mysql"
1112
"go.uber.org/zap"
12-
"strconv"
13-
"sync"
13+
"github.com/flipped-aurora/gin-vue-admin/server/global"
14+
"github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
1415
)
1516

1617
//@author: [piexlmax](https://github.com/piexlmax)
@@ -98,17 +99,13 @@ func (casbinService *CasbinService) ClearCasbin(v int, p ...string) bool {
9899
//@return: *casbin.Enforcer
99100

100101
var (
101-
cachedEnforcer *casbin.CachedEnforcer
102+
syncedCachedEnforcer *casbin.SyncedCachedEnforcer
102103
once sync.Once
103104
)
104105

105-
func (casbinService *CasbinService) Casbin() *casbin.CachedEnforcer {
106+
func (casbinService *CasbinService) Casbin() *casbin.SyncedCachedEnforcer {
106107
once.Do(func() {
107-
a, err := gormadapter.NewAdapterByDB(global.GVA_DB)
108-
if err != nil {
109-
zap.L().Error("适配数据库失败请检查casbin表是否为InnoDB引擎!", zap.Error(err))
110-
return
111-
}
108+
a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
112109
text := `
113110
[request_definition]
114111
r = sub, obj, act
@@ -130,9 +127,10 @@ func (casbinService *CasbinService) Casbin() *casbin.CachedEnforcer {
130127
zap.L().Error("字符串加载模型失败!", zap.Error(err))
131128
return
132129
}
133-
cachedEnforcer, _ = casbin.NewCachedEnforcer(m, a)
134-
cachedEnforcer.SetExpireTime(60 * 60)
135-
_ = cachedEnforcer.LoadPolicy()
130+
131+
syncedCachedEnforcer, _ = casbin.NewSyncedCachedEnforcer(m, a)
132+
syncedCachedEnforcer.SetExpireTime(3600)
133+
_ = syncedCachedEnforcer.LoadPolicy()
136134
})
137-
return cachedEnforcer
135+
return syncedCachedEnforcer
138136
}

0 commit comments

Comments
 (0)