Files
kami_boss/internal/service/token.go
danial 82f5fa8500 refactor(utils): 移除AES CBC解密函数并优化token加密逻辑
- 删除了AesCBCDecrypt函数,不再支持AES/CBC/PKCS7Padding解密方式- 在token.go中引入hex包用于密钥和IV的解码
- 使用hex.DecodeString对secretCfg中的Key和IV进行解码
- 添加日志记录key和iv解码失败的情况
- 加密失败时增加错误日志输出
- 保持原有加密功能不变,仅调整实现细节和依赖处理
2025-11-13 16:07:43 +08:00

59 lines
1.1 KiB
Go

package service
import (
"boss/internal/config"
"boss/internal/utils"
"context"
"encoding/base64"
"encoding/hex"
"encoding/json"
"github.com/beego/beego/v2/core/logs"
"sync"
"time"
)
type TokenService struct {
}
func (t *TokenService) GetToken(ctx context.Context, userId string) (token string) {
tokenStruct := struct {
CurrentTime int64 `json:"currentTime"`
UserId string `json:"userId"`
UserAuth string `json:"userAuth"`
}{
CurrentTime: time.Now().Unix(),
UserAuth: "admin",
UserId: userId,
}
tokenBytes, _ := json.Marshal(tokenStruct)
secretCfg, err := config.GetSecret()
if err != nil {
return ""
}
key, err := hex.DecodeString(secretCfg.Key)
if err != nil {
logs.Error(err)
return ""
}
iv, err := hex.DecodeString(secretCfg.IV)
if err != nil {
logs.Error(err)
return ""
}
tokenB, err := utils.AesCBCEncrypt(tokenBytes, key, iv)
if err != nil {
logs.Error(err)
return ""
}
return base64.URLEncoding.EncodeToString(tokenB)
}
var tokenService *TokenService
func NewTokenService() *TokenService {
sync.OnceFunc(func() {
tokenService = &TokenService{}
})()
return tokenService
}