万千封印
在 gRPC 中间件中使用转码和检查身份验证对于使用gRPC 网关的gRPC 上的 http 服务器更好。https://cloud.google.com/endpoints/docs/grpc/transcoding要在标头中获得授权,请使用 gRPC 中间件并使用 gRPC MD 从上下文中获取。srv := grpc.NewServer(exampleJwtMiddleware())func exampleJwtMiddleware() grpc.UnaryServerInterceptor { return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { token, err := extractHeaderFromContext(ctx, "Authorization") // do sometings... return handler(ctx, req) }}func extractHeaderFromContext(ctx context.Context, header string) ([]string, error) { md, ok := metadata.FromIncomingContext(ctx) if !ok { return nil, ERROR_NO_HEADER_IN_REQUEST } foundedHeaders, ok := md[header] if !ok { return nil, ERROR_NO_HEADER_IN_REQUEST } return foundedHeaders, nil}