Kaynağa Gözat

修改客户端session缓存问题

zhou.xiaoning 2 yıl önce
ebeveyn
işleme
4f145455fd
2 değiştirilmiş dosya ile 30 ekleme ve 1 silme
  1. 12 1
      service/account/login.go
  2. 18 0
      service/asign/sign.go

+ 12 - 1
service/account/login.go

@@ -258,7 +258,18 @@ func RestoreLoginWithToken(loginID int, group int, token string) (err error) {
 		global.M2A_LOG.Error("Token检验恢复登录状态失败", zap.Error(err))
 		return
 	}
-	delete(client.Clients, s)
+	// 这里应该按loginid和group把之前的client删除掉
+	// delete(client.Clients, s)
+	targetKeys := make([]int, 0)
+	for key, item := range client.Clients {
+		if item.LoginID == loginLogin.LoginID && item.Group == loginLogin.Group {
+			targetKeys = append(targetKeys, key)
+		}
+	}
+	for _, k := range targetKeys {
+		delete(client.Clients, k)
+	}
+
 	client.Clients[s] = &client.Client{LoginRedis: loginLogin}
 
 	return

+ 18 - 0
service/asign/sign.go

@@ -0,0 +1,18 @@
+package asign
+
+// 签名规范:
+//     1、表单提交方式:form-data
+//     2、请求头部参数
+//         参数1:sign(签名值,具体算法参考一下的前面算法)
+//         参数2:timestamp(时间戳,13位)
+//     3、请求体参数:
+//         参数1:appId(appId值,每个接入者唯一一个)
+//         参数2:timestamp(时间戳,13位,与上述一致)
+//         参数3:bizData(json字符串,举个例子,比方说要传合同编号如:{"contractNo":"0001"})
+//     4、签名算法:
+//         4.1、将上述3所属的bizData(json字符串),按照阿拉伯字母排序(如:{"ba":1,"ac":2}--->{"ac":2,"ba":1}),
+//         4.2、将4.1排序后的字符串,将【bizData+md5(bizData)+ appId + timestatmp】拼接后利用RSA非对称加密算法(SHA1withRSA),计算出最后的签名sign,对其base64编码,放入head的key(sign)中。
+func GetSign(bizData map[string]interface{}) (sign string, err error) {
+
+	return
+}