fix(orm): 设置MySQL连接的最大空闲时间和生命周期
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m34s
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 6m34s
feat(middleware): 区分Redis中session不存在的错误情况 在MySQL连接配置中添加SetConnMaxIdleTime和SetConnMaxLifetime设置 在认证中间件中区分Redis返回的key不存在错误和其他错误
This commit is contained in:
parent
d3541a89ae
commit
041417a177
@ -17,6 +17,7 @@ import (
|
||||
"github.com/perfect-panel/server/pkg/tool"
|
||||
"github.com/perfect-panel/server/pkg/xerr"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
func AuthMiddleware(svc *svc.ServiceContext) func(c *gin.Context) {
|
||||
@ -53,7 +54,11 @@ func AuthMiddleware(svc *svc.ServiceContext) func(c *gin.Context) {
|
||||
sessionIdCacheKey := fmt.Sprintf("%v:%v", config.SessionIdKey, sessionId)
|
||||
value, err := svc.Redis.Get(c, sessionIdCacheKey).Result()
|
||||
if err != nil {
|
||||
if errors.Is(err, redis.Nil) {
|
||||
logger.WithContext(c.Request.Context()).Infow("[AuthMiddleware] session not found", logger.Field("sessionId", sessionId))
|
||||
} else {
|
||||
logger.WithContext(c.Request.Context()).Errorw("[AuthMiddleware] redis get failed", logger.Field("error", err.Error()), logger.Field("sessionId", sessionId))
|
||||
}
|
||||
result.HttpResult(c, nil, errors.Wrapf(xerr.NewErrCode(xerr.InvalidAccess), "Invalid Access"))
|
||||
c.Abort()
|
||||
return
|
||||
|
||||
@ -57,6 +57,8 @@ func ConnectMysql(m Mysql) (*gorm.DB, error) {
|
||||
sqldb, _ := db.DB()
|
||||
sqldb.SetMaxIdleConns(m.Config.MaxIdleConns)
|
||||
sqldb.SetMaxOpenConns(m.Config.MaxOpenConns)
|
||||
sqldb.SetConnMaxIdleTime(5 * time.Minute)
|
||||
sqldb.SetConnMaxLifetime(30 * time.Minute)
|
||||
return db, nil
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user