如何在nestjs grpc上下文中获取客户端ip

问题描述 投票:0回答:1

想象一下我们在 NestJS 中有这样的代码。不管是

Guard
还是
Interceptor
。 一般来说,您可以访问ExecutionContext的地方。

import { CanActivate } from "@nestjs/common";

export class MyCustomGuard implements CanActivate {
  constructor() {}
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const ctx = context.getType();
    if (ctx !== "rpc") return true;

    const rpc = context.switchToRpc();
    // ip validation
    return true;
  }
}

如何在 grpc 上下文中获取客户端 IP 地址?

node.js nestjs grpc
1个回答
0
投票

经过一番挖掘,我发现了这个。我们可以在

ServerWritableStreamImpl
实例中发现客户端 IP 地址
args[2]

import { CanActivate } from "@nestjs/common";

export class MyCustomGuard implements CanActivate {
  constructor() {}
  async canActivate(context: ExecutionContext): Promise<boolean> {
    const ctx = context.getType();
    if (ctx !== "rpc") return true;

     const rpc = context.switchToRpc();
     const [ip, port] = context.switchToRpc().args[2].call.getPeer().split(":");

    return true;
  }
}

相关有用链接: 如何使用节点grpc获取客户端IP地址

© www.soinside.com 2019 - 2024. All rights reserved.