b6e571c3
zhangqijia
添加参考链接
|
1
2
|
//参考:https://jergoo.gitbooks.io/go-grpc-practice-guide/content/chapter2/interceptor.html
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
3
4
5
6
7
8
|
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
9
|
"google.golang.org/grpc/credentials"
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
10
11
12
13
14
|
_ "pro2d/conf"
"pro2d/protos/pb"
"pro2d/utils"
)
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
15
|
func Register(c pb.LoginClient, phone, password string) error {
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
16
17
18
19
20
21
22
23
24
25
|
r, err := c.RegisterHandler(context.Background(), &pb.Register{
Phone: "17683852936",
Password: "123456",
Code: 0,
})
if err != nil {
return err
}
if r.Code != 0 {
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
26
|
return fmt.Errorf("register fail")
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
27
28
29
30
31
|
}
utils.Sugar.Debug("register success")
return nil
}
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
32
33
34
|
func Login(loginUri, token, uid string) {
var opts []grpc.DialOption
// 指定自定义认证
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
opts = append(opts, grpc.WithPerRPCCredentials(&utils.AuthToken{Token: token}))
if TLS {
// TLS连接
creds, err := credentials.NewClientTLSFromFile("keys/server.pem", ServerName)
if err != nil {
utils.Sugar.Fatalf("Failed to create TLS credentials %v", err)
return
}
opts = append(opts, grpc.WithTransportCredentials(creds))
}else{
opts = append(opts, grpc.WithInsecure())
}
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
49
|
gameConn, err := grpc.Dial(loginUri, opts...)
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
50
51
52
53
54
55
56
|
if err != nil {
utils.Sugar.Errorf("game conn err: %v", err)
return
}
defer gameConn.Close()
client:= pb.NewGameClient(gameConn)
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
57
|
var role *pb.Role
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
58
59
60
|
loginRsp, err := client.LoginHandler(context.Background(), &pb.LoginReq{
Uid: uid,
Device: "111111",
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
61
62
63
64
65
66
|
})
if err != nil {
utils.Sugar.Errorf("login error: %v", err)
return
}
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
67
|
role = loginRsp.Role
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
68
|
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
69
70
71
|
if loginRsp.Code != 0 {
utils.Sugar.Debugf("login fail, role not exist")
createRole, err := client.CreateRoleHandler(context.Background(), &pb.LoginReq{Uid: uid, Device: "11111"})
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
72
73
74
75
|
if err != nil {
utils.Sugar.Errorf("create role err: %v", err)
return
}
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
76
|
utils.Sugar.Debug("create role rsp: ", createRole.Code)
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
77
|
role = createRole.Role
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
78
|
}
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
79
|
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
80
|
utils.Sugar.Debugf("login successful role: %v", role)
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
81
82
|
}
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
83
84
85
86
87
|
const (
TLS = true
ServerName = "pro2d"
)
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
88
|
func main() {
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
var opts []grpc.DialOption
if TLS {
// TLS连接
creds, err := credentials.NewClientTLSFromFile("keys/server.pem", ServerName)
if err != nil {
utils.Sugar.Fatalf("Failed to create TLS credentials %v", err)
return
}
opts = append(opts, grpc.WithTransportCredentials(creds))
}else{
opts = append(opts, grpc.WithInsecure())
}
conn, err := grpc.Dial("localhost:8848", opts...)
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
105
106
107
108
109
|
if err != nil {
utils.Sugar.Errorf("conn err: %v", err)
return
}
defer conn.Close()
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
110
|
c := pb.NewLoginClient(conn)
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
111
|
//err = Register(c,"17683852936", "123456")
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
112
113
114
115
|
//if err != nil {
// utils.Sugar.Errorf("register err: %v", err)
// return
//}
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
116
|
rsp, err := c.CreateTokenHandler(context.Background(), &pb.Account{
|
ee23102d
zhangqijia
支持mongo, grpc接服务器
|
117
118
119
120
|
Phone: "17683852936",
Password: "123456",
})
|
1584eb4b
zhangqijia
修复创建唯一索引的bug
|
121
122
123
124
125
|
if err != nil {
utils.Sugar.Errorf("createtoken err: %v", err)
return
}
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
126
127
|
if rsp.Code != 0 {
utils.Sugar.Errorf("createtoken err" )
|
1584eb4b
zhangqijia
修复创建唯一索引的bug
|
128
129
130
|
return
}
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
131
|
if len(rsp.GameService) >0 {
|
563acaf7
zhangqijia
在拦截器中认证jwt
|
132
|
Login(rsp.GameService[0].Address, rsp.Token, rsp.Uid)
|
f7f4beb5
zhangqijia
新增grpc平滑关闭,修复crea...
|
133
|
}
|
88e31175
zhangqijia
grpc 增加tls, 使用san证书
|
134
|
}
|