diff --git a/main.go b/main.go index cc73865..16b4e8a 100644 --- a/main.go +++ b/main.go @@ -150,13 +150,13 @@ func JWTAuthMiddleware() gin.HandlerFunc { c.Next() return } + if proto.SigningKeyIsValid == false { + c.AbortWithStatusJSON(http.StatusOK, gin.H{"message": "server error", "error": "token secret is invalid", "code": proto.SigningKeyIsValid}) + return + } if tokenString == "" { //c.AbortWithStatus(200) - c.JSON(200, gin.H{ - "message": "Unauthorized", - "error": "token is empty", - "code": proto.TokenIsNull, - }) + c.JSON(http.StatusOK, gin.H{"message": "Unauthorized", "error": "token is empty", "code": proto.TokenIsNull}) return } if proto.Config.TOKEN_USE_REDIS { diff --git a/proto/conf.go b/proto/conf.go index a7de18d..8d47f45 100644 --- a/proto/conf.go +++ b/proto/conf.go @@ -22,6 +22,7 @@ var SigningKeyRWLock = &sync.RWMutex{} var SyncSecretReqLog int64 var CurrentConfigPath string +var SigningKeyIsValid = true // 是否有效的签名密钥 const ( MYSQL_USER = "video_t2" diff --git a/proto/status.go b/proto/status.go index 3d9710b..f51d337 100644 --- a/proto/status.go +++ b/proto/status.go @@ -78,4 +78,5 @@ const ( MonitorServerIDIsNull = 110 // 监控服务器ID为空 MonitorServerIDNotFound = 111 // 监控服务器ID不存在 + SigningKeyVersionIsTooOld = 200 ) diff --git a/service/toolService.go b/service/toolService.go index 766df4f..12ca8f5 100644 --- a/service/toolService.go +++ b/service/toolService.go @@ -213,6 +213,7 @@ func SyncTokenSecretFromUserCenter() { proto.SigningKey = []byte(secretSettings.Curr) proto.Config.TOKEN_SECRET = secretSettings.Curr proto.SigningKeyRWLock.Unlock() + proto.SigningKeyIsValid = true //配置写回文件 go proto.WriteConfigToFile() log.Println("SyncTokenSecretFromUserCenter current secret updated successfully") @@ -252,6 +253,7 @@ func SetNextSecretToCurrent(secret_copy proto.SecretSyncSettings) { secret_sync_settings.Curr = secret_sync_settings.Next secret_sync_settings.Next = "" secret_sync_settings.CurrStartTimestamp = secret_sync_settings.PrevEndTimestamp + proto.SigningKeyIsValid = true //设置当前程序的密钥 //获取写锁 @@ -299,6 +301,9 @@ func GetTokenSecretFromUserCenter() (*proto.SecretSyncSettings, error) { return nil, err } if respObject.Code != 0 { + if respObject.Code == proto.SigningKeyVersionIsTooOld { + proto.SigningKeyIsValid = false //设置当前密钥无效 + } log.Println("GetTokenSecretFromUserCenter error code:", respObject.Code, "\t, message:", respObject.Message) return nil, fmt.Errorf("GetTokenSecretFromUserCenter error code: %d, message: %s", respObject.Code, respObject.Message) }