Compare commits

..

3 Commits

Author SHA1 Message Date
junleea c3170ddcb2 Merge branch 'refs/heads/feat-sync-secret' into release 2025-08-10 14:05:37 +08:00
junleea 1d698dd28a 设置密钥无效返回 2025-08-10 14:01:45 +08:00
junleea 11255c71a6 设置密钥无效返回 2025-08-10 13:59:43 +08:00
4 changed files with 12 additions and 5 deletions

10
main.go
View File

@ -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 {

View File

@ -22,6 +22,7 @@ var SigningKeyRWLock = &sync.RWMutex{}
var SyncSecretReqLog int64
var CurrentConfigPath string
var SigningKeyIsValid = true // 是否有效的签名密钥
const (
MYSQL_USER = "video_t2"

View File

@ -78,4 +78,5 @@ const (
MonitorServerIDIsNull = 110 // 监控服务器ID为空
MonitorServerIDNotFound = 111 // 监控服务器ID不存在
SigningKeyVersionIsTooOld = 200
)

View File

@ -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)
}