Browse Source

fix: Enforcer => SyncedEnforcer Solve Map Preemption

SliverHorn 3 years ago
parent
commit
6f6178ab0a
2 changed files with 92 additions and 120 deletions
  1. 78 114
      server/config.yaml
  2. 14 6
      server/service/sys_casbin.go

+ 78 - 114
server/config.yaml

@@ -1,77 +1,12 @@
-# Gin-Vue-Admin Global Configuration
-
-# jwt configuration
-jwt:
-  signing-key: 'qmPlus'
-  expires-time: 604800
-  buffer-time: 86400
-
-# zap logger configuration
-zap:
-  level: 'info'
-  format: 'console'
-  prefix: '[GIN-VUE-ADMIN]'
-  director: 'log'
-  link-name: 'latest_log'
-  show-line: true
-  encode-level: 'LowercaseColorLevelEncoder'
-  stacktrace-key: 'stacktrace'
-  log-in-console: true
-
-# redis configuration
-redis:
-  db: 0
-  addr: '127.0.0.1:6379'
-  password: ''
-
-# email configuration
-email:
-  to: '[email protected]'
-  port: 465
-  from: '[email protected]'
-  host: 'smtp.163.com'
-  is-ssl: true
-  secret: 'xxx'
-  nickname: 'test'
-
-# casbin configuration
-casbin:
-  model-path: './resource/rbac_model.conf'
-
-# system configuration
-system:
-  env: 'public'  # Change to "develop" to skip authentication for development mode
-  addr: 8888
-  db-type: 'mysql'
-  oss-type: 'local'    # 控制oss选择走本期还是 七牛等其他仓 自行增加其他oss仓可以在 server/utils/upload/upload.go 中 NewOss函数配置
-  use-multipoint: false
-
-# captcha configuration
-captcha:
-  key-long: 6
-  img-width: 240
-  img-height: 80
-
-# mysql connect configuration
-mysql:
-  path: ''
-  config: ''
-  db-name: ''
-  username: ''
-  password: ''
-  max-idle-conns: 10
-  max-open-conns: 100
-  log-mode: false
-  log-zap: ""
-
-# local configuration
-local:
-  path: 'uploads/file'
-
-# autocode configuration
+aliyun-oss:
+  endpoint: yourEndpoint
+  access-key-id: yourAccessKeyId
+  access-key-secret: yourAccessKeySecret
+  bucket-name: yourBucketName
+  bucket-url: yourBucketUrl
 autocode:
   transfer-restart: true
-  root: ""
+  root: /Users/sliverhorn/Go/src/github.com/flipped-aurora/gin-vue-admin
   server: /server
   server-api: /api/v1
   server-initialize: /initialize
@@ -81,51 +16,80 @@ autocode:
   server-service: /service
   web: /web/src
   web-api: /api
-  web-flow: /view
   web-form: /view
   web-table: /view
-
-# qiniu configuration (请自行七牛申请对应的 公钥 私钥 bucket 和 域名地址)
+  web-flow: /view
+captcha:
+  key-long: 6
+  img-width: 240
+  img-height: 80
+casbin:
+  model-path: ./resource/rbac_model.conf
+email:
+  to: [email protected]
+  port: 465
+  from: [email protected]
+  host: smtp.163.com
+  is-ssl: true
+  secret: xxx
+  nickname: test
+excel:
+  dir: ./resource/excel/
+jwt:
+  signing-key: qmPlus
+  expires-time: 604800
+  buffer-time: 86400
+local:
+  path: uploads/file
+mysql:
+  path: 127.0.0.1:13307
+  config: charset=utf8mb4&parseTime=True&loc=Local
+  db-name: gva
+  username: root
+  password: gdkid,,..
+  max-idle-conns: 0
+  max-open-conns: 0
+  log-mode: false
+  log-zap: ""
 qiniu:
-  zone: 'ZoneHuaDong'
-  bucket: ''
-  img-path: ''
+  zone: ZoneHuaDong
+  bucket: ""
+  img-path: ""
   use-https: false
-  access-key: ''
-  secret-key: ''
+  access-key: ""
+  secret-key: ""
   use-cdn-domains: false
-
-
-# aliyun oss configuration
-aliyun-oss:
-  endpoint: 'yourEndpoint'
-  access-key-id: 'yourAccessKeyId'
-  access-key-secret: 'yourAccessKeySecret'
-  bucket-name: 'yourBucketName'
-  bucket-url: 'yourBucketUrl'
-
-# tencent cos configuration
+redis:
+  db: 0
+  addr: 127.0.0.1:6379
+  password: ""
+system:
+  env: public
+  addr: 8888
+  db-type: mysql
+  oss-type: local
+  use-multipoint: false
 tencent-cos:
-  bucket: 'xxxxx-10005608'
-  region: 'ap-shanghai'
-  secret-id: 'xxxxxxxx'
-  secret-key: 'xxxxxxxx'
-  base-url: 'https://gin.vue.admin'
-  path-prefix: 'gin-vue-admin'
-
-# excel configuration
-excel:
-  dir: './resource/excel/'
-
-
-# timer task db clear table
-Timer:
-  spec: "@daily"  # 定时任务详细配置参考 https://pkg.go.dev/github.com/robfig/cron?utm_source=godoc
-  detail: [
-    # tableName: 需要清理的表名
-    # compareField: 需要比较时间的字段
-    # interval: 时间间隔, 具体配置详看 time.ParseDuration() 中字符串表示 且不能为负数
-    # 2160h = 24 * 30 * 3 -> 三个月
-    { tableName: "sys_operation_records" , compareField: "created_at", interval: "2160h" },
-    #{ tableName: "log2" , compareField: "created_at", interval: "2160h" }
-  ]
+  bucket: xxxxx-10005608
+  region: ap-shanghai
+  secret-id: xxxxxxxx
+  secret-key: xxxxxxxx
+  base-url: https://gin.vue.admin
+  path-prefix: gin-vue-admin
+timer:
+  start: false
+  spec: '@daily'
+  detail:
+  - tableName: sys_operation_records
+    compareField: created_at
+    interval: 2160h
+zap:
+  level: info
+  format: console
+  prefix: '[GIN-VUE-ADMIN]'
+  director: log
+  link-name: latest_log
+  showLine: true
+  encode-level: LowercaseColorLevelEncoder
+  stacktrace-key: stacktrace
+  log-in-console: true

+ 14 - 6
server/service/sys_casbin.go

@@ -10,6 +10,7 @@ import (
 	gormadapter "github.com/casbin/gorm-adapter/v3"
 	_ "github.com/go-sql-driver/mysql"
 	"strings"
+	"sync"
 )
 
 //@author: [piexlmax](https://github.com/piexlmax)
@@ -88,12 +89,19 @@ func ClearCasbin(v int, p ...string) bool {
 //@description: 持久化到数据库  引入自定义规则
 //@return: *casbin.Enforcer
 
-func Casbin() *casbin.Enforcer {
-	a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
-	e, _ := casbin.NewEnforcer(global.GVA_CONFIG.Casbin.ModelPath, a)
-	e.AddFunction("ParamsMatch", ParamsMatchFunc)
-	_ = e.LoadPolicy()
-	return e
+var (
+	syncedEnforcer *casbin.SyncedEnforcer
+	once           sync.Once
+)
+
+func Casbin() *casbin.SyncedEnforcer {
+	once.Do(func() {
+		a, _ := gormadapter.NewAdapterByDB(global.GVA_DB)
+		syncedEnforcer, _ = casbin.NewSyncedEnforcer(global.GVA_CONFIG.Casbin.ModelPath, a)
+		syncedEnforcer.AddFunction("ParamsMatch", ParamsMatchFunc)
+	})
+	_ = syncedEnforcer.LoadPolicy()
+	return syncedEnforcer
 }
 
 //@author: [piexlmax](https://github.com/piexlmax)