From 68b4550c5623eb8149036b8cb252c63d5c35c73a Mon Sep 17 00:00:00 2001 From: Leon <147289645+LeoninCS@users.noreply.github.com> Date: Tue, 16 Dec 2025 18:47:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:secret=E4=BB=8E=E7=8E=AF=E5=A2=83=E4=B8=AD?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/auth/jwt.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/internal/auth/jwt.go b/internal/auth/jwt.go index dd435ef..e7e4737 100644 --- a/internal/auth/jwt.go +++ b/internal/auth/jwt.go @@ -2,12 +2,20 @@ package auth import ( + "errors" + "os" "time" "github.com/golang-jwt/jwt/v5" ) -var secret = []byte("change-me-in-env") +func jwtSecret() []byte { + secret := os.Getenv("JWT_SECRET") + if secret == "" { + secret = "change-me-in-env" + } + return []byte(secret) +} type Claims struct { AccountID uint `json:"account_id"` @@ -30,7 +38,7 @@ func GenerateToken(accountID uint, username string) (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) - return token.SignedString(secret) + return token.SignedString(jwtSecret()) } func ParseToken(tokenString string) (*Claims, error) { @@ -38,7 +46,10 @@ func ParseToken(tokenString string) (*Claims, error) { tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) { - return secret, nil + if token.Method == nil || token.Method.Alg() != jwt.SigningMethodHS256.Alg() { + return nil, errors.New("unexpected signing method") + } + return jwtSecret(), nil }, ) if err != nil {