Sfoglia il codice sorgente

调用mcp微服务测试通过

qdy 1 mese fa
parent
commit
804a2a14ca

+ 32
- 0
internal/service/token/token_service.go Vedi File

@@ -0,0 +1,32 @@
1
+package token
2
+
3
+import (
4
+	"fmt"
5
+
6
+	"git.x2erp.com/qdy/go-base/config"
7
+	"git.x2erp.com/qdy/go-base/ctx"
8
+	"git.x2erp.com/qdy/go-base/logger"
9
+	"git.x2erp.com/qdy/go-base/model/request/configreq"
10
+	"git.x2erp.com/qdy/go-base/model/response"
11
+	"git.x2erp.com/qdy/go-base/util"
12
+	"git.x2erp.com/qdy/go-base/util/jwt"
13
+)
14
+
15
+// CreateConfigureToken 建立访问配置中心token
16
+func CreateConfigureToken(tokenRequest *configreq.ConfigTokenRequest, reqCtx *ctx.RequestContext) *response.QueryResult[string] {
17
+
18
+	claims := &jwt.Claims{
19
+		UserID:    tokenRequest.ServiceName,
20
+		ProjectID: tokenRequest.ProjectID,
21
+	}
22
+	secretKey := config.GetServiceConfig().SecretKey
23
+	token, err := jwt.CreateTokenDays(claims, tokenRequest.ExpiresDays, secretKey)
24
+
25
+	if err != nil {
26
+		logger.ErrorC(reqCtx, fmt.Sprintf("建立token产生错误: %v", err))
27
+		return util.CreateErrorResult[string](fmt.Sprintf("建立token产生错误: %v", err), reqCtx)
28
+	}
29
+
30
+	logger.Debug("建立token成功!")
31
+	return util.CreateSuccessResultData(token, reqCtx)
32
+}

+ 13
- 6
main.go Vedi File

@@ -4,7 +4,7 @@ import (
4 4
 	"context"
5 5
 	"log"
6 6
 
7
-	"git.x2erp.com/qdy/go-base/auth"
7
+	"git.x2erp.com/qdy/go-base/authbase"
8 8
 	"git.x2erp.com/qdy/go-base/config"
9 9
 	"git.x2erp.com/qdy/go-base/container"
10 10
 	"git.x2erp.com/qdy/go-base/ctx"
@@ -21,6 +21,7 @@ import (
21 21
 	"git.x2erp.com/qdy/go-svc-configure/internal/service/register"
22 22
 	"git.x2erp.com/qdy/go-svc-configure/internal/service/startup"
23 23
 	"git.x2erp.com/qdy/go-svc-configure/internal/service/svcstartup"
24
+	"git.x2erp.com/qdy/go-svc-configure/internal/service/token"
24 25
 	_ "git.x2erp.com/qdy/go-svc-configure/internal/tables" // 导入表定义包,触发 init() 函数
25 26
 )
26 27
 
@@ -76,39 +77,45 @@ func main() {
76 77
 
77 78
 // 注册所有路由
78 79
 func registerRoutes(ws *router.RouterService, dbFactory *database.DBFactory) {
80
+	// 建立访问配置中心Token
81
+	ws.POST("/api/create/config/token",
82
+		func(tokenRequest *configreq.ConfigTokenRequest, reqCtx *ctx.RequestContext) (*response.QueryResult[string], error) {
83
+			return token.CreateConfigureToken(tokenRequest, reqCtx), nil
84
+		},
85
+	).Use(authbase.BasicAuth).Desc("建立访问配置中心的token").Register()
79 86
 
80 87
 	// svc
81 88
 	ws.POST("/api/delete/config/startup/{servicename}",
82 89
 		func(servicename string, req *configreq.ConfigRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[int64], error) {
83 90
 			return svcstartup.DeleteSVCtartupConfig(servicename, req, ctx, dbFactory, reqCtx), nil
84 91
 		},
85
-	).Use(auth.BasicAuth).Register()
92
+	).Use(authbase.BasicAuth).Register()
86 93
 
87 94
 	ws.POST("/api/create/config/startup/{servicename}",
88 95
 		func(servicename string, req *configreq.ConfigRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[int64], error) {
89 96
 			return svcstartup.CreateStartupSVCConfig(servicename, req, ctx, dbFactory, reqCtx), nil
90 97
 		},
91
-	).Use(auth.TokenAuth).Register()
98
+	).Use(authbase.TokenAuth).Register()
92 99
 
93 100
 	// startup
94 101
 	ws.POST("/api/delete/config/startup",
95 102
 		func(req *configreq.ConfigRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[int64], error) {
96 103
 			return startup.DeleteStartupConfig(req, ctx, dbFactory, reqCtx), nil
97 104
 		},
98
-	).Use(auth.BasicAuth).Register()
105
+	).Use(authbase.BasicAuth).Register()
99 106
 
100 107
 	ws.POST("/api/create/config/startup",
101 108
 		func(req *configreq.ConfigRequest, ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[int64], error) {
102 109
 			return startup.CreateStartupConfig(req, ctx, dbFactory, reqCtx), nil
103 110
 		},
104
-	).Use(auth.TokenAuth).Register()
111
+	).Use(authbase.TokenAuth).Register()
105 112
 
106 113
 	//init
107 114
 	ws.POST("/api/init/config/meta",
108 115
 		func(ctx context.Context, reqCtx *ctx.RequestContext) (*response.QueryResult[map[string]interface{}], error) {
109 116
 			return register.RegisterConfigMeta(ctx, dbFactory, reqCtx), nil
110 117
 		},
111
-	).Use(auth.TokenAuth).Register()
118
+	).Use(authbase.TokenAuth).Register()
112 119
 
113 120
 }
114 121
 

+ 70
- 0
test/my_config_token_test.go Vedi File

@@ -0,0 +1,70 @@
1
+package main
2
+
3
+import (
4
+	"bytes"
5
+	"encoding/json"
6
+	"fmt"
7
+	"io"
8
+	"log"
9
+	"net/http"
10
+	"os/exec"
11
+	"testing"
12
+
13
+	"git.x2erp.com/qdy/go-base/model/request/configreq"
14
+)
15
+
16
+// 建立访问配置中心的token
17
+func TestCreateConfigToken(t *testing.T) {
18
+
19
+	// token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoic3ZjLW1jcCIsInVzZXJuYW1lIjoiIiwidGVuYW50X2lkIjoiIiwicHJvamVjdF9pZCI6Ing2IiwiaXNzIjoiand0LWFwcCIsInN1YiI6InN2Yy1tY3AiLCJleHAiOjE3NjkzNDg4NTksIm5iZiI6MTc2ODc0NDA1OSwiaWF0IjoxNzY4NzQ0MDU5fQ.llW4J4SZct06jXdjjmGpXKl5UYxYeayS5XOGdmrmh8c"
20
+
21
+	// c, err := jwt.ParseToken(token, "qwudndgzvxdypdoqd1bhdcdd1qqwzxpoew")
22
+	// if err != nil {
23
+	// 	t.Logf("token: %v", err)
24
+	// }
25
+	// t.Logf("token: %s", c.ProjectID)
26
+	// 清除测试缓存
27
+	cmd := exec.Command("go", "clean", "-testcache")
28
+	if err := cmd.Run(); err != nil {
29
+		t.Logf("清除测试缓存失败: %v", err)
30
+		// 继续执行测试
31
+	}
32
+	httpClient := &http.Client{}
33
+	url := "http://localhost:8080/api/create/config/token"
34
+
35
+	data := configreq.ConfigTokenRequest{
36
+		ProjectID:   "x6",
37
+		ServiceName: "svc-mcp",
38
+	}
39
+	jsonData, err := json.Marshal(data)
40
+
41
+	req, err := http.NewRequest("POST", url, bytes.NewReader(jsonData))
42
+	if err != nil {
43
+		log.Printf("NewRequest:%v", err)
44
+	}
45
+
46
+	// Basic Auth 认证
47
+	req.SetBasicAuth("admin", "123")
48
+
49
+	//req.Header.Set("Authorization", "Bearer 123")
50
+	req.Header.Set("Content-Type", "application/json")
51
+
52
+	resp, err := httpClient.Do(req)
53
+
54
+	if err != nil {
55
+		fmt.Printf("发送请求失败: %v\n", err)
56
+		return
57
+	}
58
+	defer resp.Body.Close()
59
+
60
+	// 读取响应
61
+	body, err := io.ReadAll(resp.Body)
62
+	if err != nil {
63
+		fmt.Printf("读取响应失败: %v\n", err)
64
+		return
65
+	}
66
+
67
+	fmt.Printf("状态码: %d\n", resp.StatusCode)
68
+	fmt.Printf("响应体: %s\n", string(body))
69
+
70
+}

+ 20
- 0
test/my_vaildate_token_test.go Vedi File

@@ -0,0 +1,20 @@
1
+package main
2
+
3
+import (
4
+	"testing"
5
+
6
+	"git.x2erp.com/qdy/go-base/util/jwt"
7
+)
8
+
9
+// 建立访问配置中心的token
10
+func TestVaildateConfigToken(t *testing.T) {
11
+
12
+	token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoic3ZjLW1jcCIsInVzZXJuYW1lIjoiIiwidGVuYW50X2lkIjoiIiwicHJvamVjdF9pZCI6Ing2IiwiaXNzIjoiand0LWFwcCIsInN1YiI6InN2Yy1tY3AiLCJleHAiOjE3NjkzNDg4NTksIm5iZiI6MTc2ODc0NDA1OSwiaWF0IjoxNzY4NzQ0MDU5fQ.llW4J4SZct06jXdjjmGpXKl5UYxYeayS5XOGdmrmh8c"
13
+
14
+	c, err := jwt.ParseToken(token, "qwudndgzvxdypdoqd1bhdcdd1qqwzxpoew")
15
+	if err != nil {
16
+		t.Logf("token: %v", err)
17
+	}
18
+	t.Logf("token: %s", c.ProjectID)
19
+
20
+}

Loading…
Annulla
Salva