diff --git a/grpc.go b/grpc.go index 42e7101..e1043af 100644 --- a/grpc.go +++ b/grpc.go @@ -18,6 +18,7 @@ import ( "github.com/micro/go-micro/v2/errors" "github.com/micro/go-micro/v2/metadata" "github.com/micro/go-micro/v2/registry" + "github.com/micro/go-micro/v2/util/config" "google.golang.org/grpc" "google.golang.org/grpc/credentials" @@ -25,6 +26,10 @@ import ( gmetadata "google.golang.org/grpc/metadata" ) +var ( + BearerScheme = "Bearer " +) + type grpcClient struct { opts client.Options pool *pool @@ -128,6 +133,10 @@ func (g *grpcClient) call(ctx context.Context, node *registry.Node, req client.R header["timeout"] = fmt.Sprintf("%d", opts.RequestTimeout) // set the content type for the request header["x-content-type"] = req.ContentType() + // set the authorization token if one is saved locally + if token, err := config.Get("token"); err == nil && len(token) > 0 { + header["authorization"] = BearerScheme + token + } md := gmetadata.New(header) ctx = gmetadata.NewOutgoingContext(ctx, md)