Roc 4 months ago
parent
commit
32d6ba9aa6
1 changed files with 51 additions and 43 deletions
  1. 51 43
      controllers/base_auth.go

+ 51 - 43
controllers/base_auth.go

@@ -647,6 +647,22 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
 	// 是否校验成功
 	isOk = true
 	uri := c.Ctx.Input.URI()
+
+	// 单点登录逻辑
+	aiUser := c.Ctx.GetCookie("ai_user")
+	if aiUser == `` {
+		aiUser = c.Ctx.GetCookie("ai_token")
+	}
+	//fmt.Println("ai_user:", aiUser)
+
+	// 如果cookie里面没有这个,那么就过期重新登录
+	if aiUser == `` {
+		resp = models.BaseResponse{Ret: 408, Msg: "请重新授权!", ErrMsg: "ai_user or ai_token empty"}
+		isOk = false
+		return
+	}
+
+	// 获取eta的token
 	authorization := c.Ctx.Input.Header("authorization")
 	if authorization == "" {
 		authorization = c.Ctx.Input.Header("Authorization")
@@ -681,55 +697,47 @@ func checkToken(c *BaseAuthController) (isOk bool, token string, resp models.Bas
 		token = tokenArr[1]
 	}
 
-	// 单点登录逻辑
-	aiUser := c.Ctx.GetCookie("ai_user")
-	if aiUser == `` {
-		aiUser = c.Ctx.GetCookie("ai_token")
-	}
-	fmt.Println("ai_user:", aiUser)
 	//fmt.Println("token:", token)
-	if aiUser != "" {
-		// Token空了, 以Cookie为准重新登录
-		if token == `` {
-			newLogin, e := services.UserLoginChange(aiUser)
-			if e != nil {
-				resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
-			} else {
-				resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
-			}
-			isOk = false
-			return
+	// Token空了, 以Cookie为准重新登录
+	if token == `` {
+		newLogin, e := services.UserLoginChange(aiUser)
+		if e != nil {
+			resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
+		} else {
+			resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
 		}
+		isOk = false
+		return
+	}
 
-		// todo 将aiUser与session进行关联
-		// token不为空, 那么去校验一下token是否过期, 以及和cookieVal是否匹配
-		// 找不到session, 也直接切CookieValue中的用户登录
-		session, err := system.GetSysSessionByToken(token)
-		if err != nil {
-			newLogin, e := services.UserLoginChange(aiUser)
-			if e != nil {
-				resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
-			} else {
-				resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
-			}
-			isOk = false
-			return
+	// todo 将aiUser与session进行关联
+	// token不为空, 那么去校验一下token是否过期, 以及和cookieVal是否匹配
+	// 找不到session, 也直接切CookieValue中的用户登录
+	session, err := system.GetSysSessionByToken(token)
+	if err != nil {
+		newLogin, e := services.UserLoginChange(aiUser)
+		if e != nil {
+			resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
+		} else {
+			resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
 		}
+		isOk = false
+		return
+	}
 
-		// CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
-		account := utils.MD5(session.UserName)
-		loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
-		loginCache, _ := utils.Rc.RedisString(loginKey)
-		if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
-			newLogin, e := services.UserLoginChange(aiUser)
-			if e != nil {
-				resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
-			} else {
-				resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
-			}
-			isOk = false
-			return
+	// CookieVal不匹配、token验证失败、session以及redis中的token过期,那么以cookieVal的用户去登录并返回4014
+	account := utils.MD5(session.UserName)
+	loginKey := fmt.Sprint(utils.CACHE_ACCESS_TOKEN_LOGIN, session.Id)
+	loginCache, _ := utils.Rc.RedisString(loginKey)
+	if session.UserName != aiUser || !utils.CheckToken(account, token) || time.Now().After(session.ExpiredTime) || (session.IsRemember != 1 && loginCache == ``) {
+		newLogin, e := services.UserLoginChange(aiUser)
+		if e != nil {
+			resp = models.BaseResponse{Ret: 408, Msg: "重登录失败,请稍后重试!", ErrMsg: fmt.Sprint(e)}
+		} else {
+			resp = models.BaseResponse{Ret: models.BaseRespReLoginErr, Msg: "用户切换,请刷新页面", ErrMsg: "user exchanged", Data: newLogin}
 		}
+		isOk = false
+		return
 	}
 
 	// 正常逻辑