gpt4 book ai didi

go - 如何在现有的 ClientConn 上添加 clientOption?

转载 作者:行者123 更新时间:2023-12-01 22:23:43 25 4
gpt4 key购买 nike

我正在用 go 语言编写 gRPC 客户端应用程序。

每个 ClientConn 都有 JWT token ,现在我在使用各种 JWT token 应用缓存/重用 ClientConn 时遇到了一些问题。

以前我每次都使用新的 JWT token 创建 ClientConn,如下所示:

conn, err := grpc.Dial(endpoint, WithPerRPCCredentials(oauth.NewOauthAccess(token))

但在我的应用程序中, token 每次都会更改。但我找不到仅应用新 token 来重用现有 ClientConn 的方法。

有没有办法用现有的 ClientConn 替换特定的 DialOption(或替换 JWT token )?

或者这是注入(inject) Authorization的最佳方式吗?元数据到每个 gRPC 调用的上下文中?

最佳答案

正如@apolcyn 提到的,PerRpcCredentials 实现通常负责刷新访问 token 。

如果您有 JWT token ,您还可以考虑使用 NewJWTAccessFromFileNewJWTAccessFromKey .

在任何情况下,如果您的 token 来源可以更改并且您仍然希望能够使用相同的 ClientConn ,您可以使用 CallOption在您进行的每个 RPC 期间指定您的凭据,而不是将其指定为 DialOption在创建您的 ClientConn 期间.这是您感兴趣的 callOption:https://godoc.org/google.golang.org/grpc#PerRPCCredentials

将任意元数据注入(inject)每个 gRPC 调用的另一种选择是使用客户端拦截器。见 WithUnaryInterceptorWithStreamInterceptor拨号选项。

希望这可以帮助。

关于go - 如何在现有的 ClientConn 上添加 clientOption?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61298896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com