ソースを参照

update 优化用户token

Alvin 8 ヶ月 前
コミット
02eac6b17c

+ 2 - 1
game/game_cluster/nodes/webadmin/router/middleware.go

@@ -6,6 +6,7 @@ import (
 	"time"
 
 	"github.com/gin-gonic/gin"
+	"github.com/go-redis/redis/v8"
 	cfacade "github.com/mhaya/facade"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
@@ -26,7 +27,7 @@ func Auth(settingObj cfacade.ProfileJSON) gin.HandlerFunc {
 		}
 
 		result, err := mdb.RDB.Get(context.Background(), tokenString).Result()
-		if err != nil {
+		if err != nil && err != redis.Nil {
 			mhayaLogger.Warnf("Auth Get error: %s", err.Error())
 			common.PackUnauthorizedResult(c, code.InternalError, "token is empty")
 			return

+ 26 - 15
game/game_cluster/nodes/webadmin/service/admin.go

@@ -8,6 +8,7 @@ import (
 	"time"
 
 	"github.com/gin-gonic/gin"
+	"github.com/go-redis/redis/v8"
 	"github.com/mhaya/game/game_cluster/internal/code"
 	"github.com/mhaya/game/game_cluster/internal/constant"
 	"github.com/mhaya/game/game_cluster/internal/mdb"
@@ -70,24 +71,34 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 		return nil, common.NewResult(code.UserNameOrPasswordError)
 	}
 
-	// 创建token
-	generateToken, err := user.GenerateToken()
-	if err != nil {
-		mhayaLogger.Warnf("Login GenerateToken error:", err)
+	token, err := mdb.RDB.Get(ctx, user.Username).Result()
+	if err != nil && err != redis.Nil {
+		mhayaLogger.Warnf("Login Get error:", err)
 		return nil, common.NewResult(code.InternalError)
 	}
 
-	// 保存token 到 redis 中 过期时间为1天
-	err = mdb.RDB.Set(ctx, generateToken, user.Username, 24*time.Hour).Err()
-	if err != nil {
-		mhayaLogger.Warnf("Login Set error:", err)
-		return nil, common.NewResult(code.InternalError)
-	}
+	if token == "" {
+		// 创建token
+		generateToken, err := user.GenerateToken()
+		if err != nil {
+			mhayaLogger.Warnf("Login GenerateToken error:", err)
+			return nil, common.NewResult(code.InternalError)
+		}
 
-	err = a.loginAuthSetRoleRedis(user.RoleId, generateToken)
-	if err != nil {
-		mhayaLogger.Warnf("Login loginAuthSetRoleRedis error:", err)
-		return nil, common.NewResult(code.InternalError)
+		// 保存token 到 redis 中 过期时间为1天
+		err = mdb.RDB.Set(ctx, user.Username, generateToken, 24*time.Hour).Err()
+		if err != nil {
+			mhayaLogger.Warnf("Login Set error:", err)
+			return nil, common.NewResult(code.InternalError)
+		}
+
+		err = a.loginAuthSetRoleRedis(user.RoleId, generateToken)
+		if err != nil {
+			mhayaLogger.Warnf("Login loginAuthSetRoleRedis error:", err)
+			return nil, common.NewResult(code.InternalError)
+		}
+
+		token = generateToken
 	}
 
 	// 更新用户登录时间
@@ -107,7 +118,7 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 
 	// 返回用户信息
 	resp := &entity.AdminResp{
-		ToKen:  generateToken,
+		ToKen:  token,
 		RoleID: user.RoleId,
 	}