zhangxinlei1996 3 سال پیش
والد
کامیت
78aec51fc9
2فایلهای تغییر یافته به همراه115 افزوده شده و 0 حذف شده
  1. 35 0
      jwt/jwt.go
  2. 80 0
      usercenter/userCenter.go

+ 35 - 0
jwt/jwt.go

@@ -0,0 +1,35 @@
+/*
+ *  用户鉴权
+ */
+
+package jwt
+
+import (
+	"time"
+
+	"github.com/golang-jwt/jwt/v4"
+)
+
+type JwtStruct struct {
+	SecretKey string
+	TimeOut   int64
+}
+
+var UserJwt = &JwtStruct{
+	SecretKey: "jianyuservice", //保持一致
+	TimeOut:   600,
+}
+
+func (this *JwtStruct) GetToken(payloads map[string]interface{}) (string, error) {
+	now := time.Now().Add(-10 * time.Second).Unix() //当前时间往前10s  iat时间要在相应服务器时间之前 否则会报错Token used before issued
+	claims := make(jwt.MapClaims)
+	claims["exp"] = now + this.TimeOut
+	claims["iat"] = now
+	for k, v := range payloads {
+		claims[k] = v
+	}
+
+	token := jwt.New(jwt.SigningMethodHS256)
+	token.Claims = claims
+	return token.SignedString([]byte(this.SecretKey))
+}

+ 80 - 0
usercenter/userCenter.go

@@ -0,0 +1,80 @@
+package util
+
+import (
+	"encoding/json"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"qfw/util/jwt"
+	"strings"
+)
+
+var ContentType_Json = "application/json"
+
+var UserCenterAdd = "/userCenter/user/add"
+var UserCenterUpdate = "/userCenter/user/updateById"
+var UserCenterDelete = "/userCenter/user/deleteById"
+
+/*
+ 修改header 的post请求
+*/
+func PostHeader(url, value string, headers map[string]string, ck *http.Cookie) (string, error) {
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, strings.NewReader(value))
+	req.AddCookie(ck)
+	if err != nil {
+		return "", err
+	}
+	for key, header := range headers {
+		req.Header.Set(key, header)
+	}
+	resp, err := client.Do(req)
+	if err != nil {
+		return "", err
+	}
+	defer resp.Body.Close()
+	body, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return "", err
+	}
+	return string(body), nil
+}
+
+//调用用户中台相关-api接口
+func PostUserCenter(url, contentTpe, userid string, data map[string]interface{}, ck *http.Cookie) (*map[string]interface{}, bool) {
+	token, err := jwt.UserJwt.GetToken(map[string]interface{}{
+		"userid": userid,
+	})
+	if err != nil {
+		log.Printf("%s获取token失败", userid)
+		return nil, false
+	}
+	log.Println("token jwt:", token)
+	log.Println("data:", data)
+	data_str, err := json.Marshal(data)
+	if err != nil {
+		log.Printf("%s序列化失败%+v", userid, data)
+		return nil, false
+	}
+	ret, err := PostHeader(url, string(data_str), map[string]string{
+		"Content-Type":  contentTpe,
+		"Authorization": token,
+	}, ck)
+	if err != nil {
+		log.Printf("%s调用%s接口失败%+v", userid, url, data)
+		return nil, false
+	}
+	log.Println("ret:", ret)
+	m := ObjToMap(ret)
+	if m == nil || len(*m) == 0 {
+		return nil, false
+	}
+	errmsg := ObjToString((*m)["error_msg"])
+	dataM := ObjToMap((*m)["data"])
+	status := IntAllDef((*dataM)["status"], 0)
+	if errmsg != "" || status != 1 {
+		log.Printf("%s调用%s接口返回结果失败:%s", userid, url, errmsg)
+		return nil, false
+	}
+	return dataM, true
+}