Kaynağa Gözat

update 统一redis key;完善登录及中间件的鉴权流程

Alvin 8 ay önce
ebeveyn
işleme
23c603f866

+ 12 - 2
game/game_cluster/nodes/webadmin/common/redisKey.go

@@ -1,10 +1,20 @@
 package common
 
 const (
-	AdminTokenPrefix    = "admin::token::"
-	AdminUserNamePrefix = "admin:username:"
+	AdminAccessPrefix   = "admin:access:"   // 角色的路由权限key
+	AdminRoleIdPrefix   = "admin:roleid:"   // 获取用户角色的key
+	AdminTokenPrefix    = "admin:token:"    // 获取用户token的key
+	AdminUserNamePrefix = "admin:username:" // 获取用户名的key
 )
 
+func GetAccessKey(key string) string {
+	return AdminAccessPrefix + key
+}
+
+func GetRoleIdKey(key string) string {
+	return AdminRoleIdPrefix + key
+}
+
 func GetTokenKey(key string) string {
 	return AdminTokenPrefix + key
 }

+ 3 - 3
game/game_cluster/nodes/webadmin/router/middleware.go

@@ -50,7 +50,7 @@ func Auth(app cfacade.IApplication) gin.HandlerFunc {
 			return
 		}
 
-		roleId, err = mdb.RDB.Get(context.Background(), tokenString).Result()
+		roleId, err = mdb.RDB.Get(context.Background(), common.GetRoleIdKey(tokenString)).Result()
 		if err != nil && err != redis.Nil {
 			mhayaLogger.Warnf("Auth Get error: %s", err.Error())
 			common.PackUnauthorizedResult(c, code.InternalError, "token is empty")
@@ -62,7 +62,7 @@ func Auth(app cfacade.IApplication) gin.HandlerFunc {
 		}
 
 		if roleId != constant.AdminAccess {
-			urlAccess, err := mdb.RDB.HGet(context.Background(), common.GetTokenKey(tokenString), c.Request.URL.Path).Result()
+			urlAccess, err := mdb.RDB.HGet(context.Background(), common.GetAccessKey(tokenString), c.Request.URL.Path).Result()
 			if err != nil {
 				mhayaLogger.Warnf("Auth HGet s error: %s", err.Error())
 				common.PackUnauthorizedResult(c, code.InternalError, "")
@@ -87,7 +87,7 @@ func Auth(app cfacade.IApplication) gin.HandlerFunc {
 			}
 		}
 
-		adminAccess, err := mdb.RDB.HGet(context.Background(), common.GetTokenKey(tokenString), constant.AdminAccess).Result()
+		adminAccess, err := mdb.RDB.HGet(context.Background(), common.GetAccessKey(tokenString), constant.AdminAccess).Result()
 		if err != nil {
 			mhayaLogger.Warnf("Auth HGet ss error: %s", err.Error())
 			common.PackUnauthorizedResult(c, code.InternalError, "")

+ 7 - 7
game/game_cluster/nodes/webadmin/service/admin.go

@@ -76,7 +76,7 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 		return nil, common.NewResult(code.UserNameOrPasswordError)
 	}
 
-	token, err := mdb.RDB.Get(ctx, user.Username).Result()
+	token, err := mdb.RDB.Get(ctx, common.GetTokenKey(user.Username)).Result()
 	if err != nil && err != redis.Nil {
 		mhayaLogger.Warnf("Login Get error:%v", err)
 		return nil, common.NewResult(code.InternalError)
@@ -91,7 +91,7 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 		}
 
 		// 保存username -> token 到 redis 中 过期时间为1天
-		err = mdb.RDB.Set(ctx, user.Username, generateToken, 24*time.Hour).Err()
+		err = mdb.RDB.Set(ctx, common.GetTokenKey(user.Username), generateToken, 24*time.Hour).Err()
 		if err != nil {
 			mhayaLogger.Warnf("Login Set user.Username error:%v", err)
 			return nil, common.NewResult(code.InternalError)
@@ -105,7 +105,7 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 		}
 
 		// 保存token -> RoleId 到 redis 中 过期时间为1天
-		err = mdb.RDB.Set(ctx, generateToken, user.RoleId, 24*time.Hour).Err()
+		err = mdb.RDB.Set(ctx, common.GetRoleIdKey(generateToken), user.RoleId, 24*time.Hour).Err()
 		if err != nil {
 			mhayaLogger.Warnf("Login Set generateToken RoleId error:%v", err)
 			return nil, common.NewResult(code.InternalError)
@@ -147,8 +147,8 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 // LoginAuthSetRoleRedis 登录时写入该用户的权限
 func (a *Admin) loginAuthSetRoleRedis(roleID, generateToken string) error {
 	if roleID == constant.AdminAccess {
-		mdb.RDB.HSet(context.Background(), common.GetTokenKey(generateToken), constant.AdminAccess, 1)
-		mdb.RDB.Expire(context.Background(), common.GetTokenKey(generateToken), 24*time.Hour).Err()
+		mdb.RDB.HSet(context.Background(), common.GetAccessKey(generateToken), constant.AdminAccess, 1)
+		mdb.RDB.Expire(context.Background(), common.GetAccessKey(generateToken), 24*time.Hour).Err()
 		return nil
 	}
 
@@ -191,9 +191,9 @@ func (a *Admin) loginAuthSetRoleRedis(roleID, generateToken string) error {
 	}
 
 	for _, v := range accessList {
-		mdb.RDB.HSet(context.Background(), common.GetTokenKey(generateToken), v.URL, 1)
+		mdb.RDB.HSet(context.Background(), common.GetAccessKey(generateToken), v.URL, 1)
 	}
-	mdb.RDB.Expire(context.Background(), common.GetTokenKey(generateToken), 24*time.Hour).Err()
+	mdb.RDB.Expire(context.Background(), common.GetAccessKey(generateToken), 24*time.Hour).Err()
 
 	return nil