node.js - NestJS - grpc 微服务中的元数据

标签 node.js grpc nestjs

我正在寻找一种通过 NestJS grpc 微服务授权 rpc 的方法。基本上我想在 grpc 客户端中附加一个 token ,该 token 必须由 grpc 服务器验证。我发现this issue ,但我没有得到 grpc.Metadata 作为第二个参数传递的确切位置。

最佳答案

我找到了解决这个问题的方法。当然不是最优雅的解决方案,但它目前有效。一个简化的例子:

// gRPC client
@Get(':id')
async call(@Param() params) {
    const metadata = new grpc.Metadata();
    // add relevant data to the metadata object (e.g from request header)
    metadata.add('role', 'admin');
    return this.userService.findOne({ id: +params.id}, metadata);
}

// Service
interface UserService {
    findOne(data: {id: number}, metadata: grpc.Metadata): Observable<any>;
}

// gRPC server
@GrpcMethod('UserService', 'FindOne')
async findOne(data: UserById, metadata: grpc.Metadata) {
    const meta = metadata.getMap();
    // do something with the metadata...
    console.log(meta.role);
    const items: User= [
        { id: 1, name: 'User 1' },
        { id: 2, name: 'User 2' },
        { id: 3, name: 'User 3' },
    ];
    return items.find(({ id }) => id === data.id);
}

关于node.js - NestJS - grpc 微服务中的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112317/

相关文章:

ssl - 如何在 Python/C++ 的 gRPC 客户端中设置 TLS/SNI 选项?

nestjs - 如何让 Inner Join 在 TypeORM 上工作?

typescript - 从命令行运行 NestJS 脚本

oop - nextTick 在类中的用法

node.js - 如何收听 session 销毁事件?

c# - 如何从运行 .NET 4.7.2 的 WPF 访问 gRPC 服务?

python - 如何从 grpc-gateway 后面的 python 服务发送状态为 non-ok 的响应消息?

angular - NestJs Angular Universal 不工作 - 启用离线持久性时出错

node.js - 离线安装 webpack

node.js - 无法将 Angular 更新到版本 6