当前位置: 首页 > 知识库问答 >
问题:

使用java grpc在ServerInterceptor中验证请求的方法

酆奇文
2023-03-14

我正在使用GRPC Java,希望使用拦截器验证请求。

许多这样的链接告诉我们使用onMessage()访问请求的方法,但我想知道他们在做什么来验证请求。

此外,onMessage()中的消息参数是通用的,我不能直接访问请求字段参数,但必须使用一些if-else/switch case键入消息,然后分别对每个字段应用检查,这是我现在的最后一个选项。

例如,下面是一个示例原型文件

...
service XYZService {
  rpc abc(Request1) returns (Response1);
  rpc def(Request2) returns (Response2);
  .
  .
  .
}

message Request1 {
  string name = 1;
  int32 number = 2;
}

message Request2 {
  string name = 1;
  int32 number = 2;
  string email = 3;
}
...

另外,我简单地打印了onMessage()的消息参数,发现请求参数为原始字符串(message.toString()),但在发送默认值时这些参数没有显示在字符串中(如字符串的“”或int32的0)[我正在使用bloomrpc在本地机器上发送请求]。所以在发送默认值时这些值不会显示在原始字符串中,或者bloomrpc中有什么?

所以我的两个问题是:

  1. 验证请求的不同方法(考虑到许多请求都有一些公共字段,其检查条件也相同)。
  2. 在原始字符串中显示默认值参数的任何解决方法。

共有2个答案

曹波鸿
2023-03-14

LogNet的gRPC Spring boot starter本机支持与Spring boot验证的集成,您可以在这里阅读更多关于如何使用Java Beans验证XML配置支持配置约束的内容

免责声明:我是这首歌的作者

司寇山
2023-03-14

原型不在线发送默认值。为了具有一致性行为,它不打印(toString)默认值。IMO,如果它打印默认值,它可能会很烦人,尤其是如果您有很多字段。

我认为在验证对象时不需要担心toString行为。因为,当使用getter时,它应该返回默认值(例如,字符串字段为“”。

 类似资料:
  • 我需要在爪哇中使用摇摆不定(YAML文件)来验证传入的REST请求。所以任何人都可以帮我这个。提前致谢。

  • 我有一个这样的处理程序和一个自定义注释@validrequest: 注释本身看起来是这样的: 而验证器是这样的: 问题是验证被完全忽略了。我可以发送任何事件有或没有身体和一切工作无一例外。我做的一切都是根据Micronout文档,会有什么问题吗? https://docs.micronaut.io/latest/guide/index.html#BeanValidation

  • 我有一个设置为接收来自WooCommerce的网络钩子的Rails应用程序。具体来说,我正在寻找创建订单的时间。我已经测试并验证了它在我protect_from_forgery时是否有效,除了创建。现在我正在尝试通过验证网络钩子来保护我的应用程序。WooCommerce的留档声明在请求标头中传递以下秘密: 秘密:一个可选的密钥,用于生成请求正文的HMAC-SHA256哈希,以便接收者可以验证Web

  • 我想用注释验证我的请求体,但是它在Spring Boot中不起作用 我在JAR文件中有一个请求类,我不能用两个字段来修改它。一个字段的类型为Object。我的控制器类接受这个类对象作为请求主体。当我将下面的JSON传递给控制器时,验证不起作用。下面是代码示例。 请求类: 另一类: 控制器类: 呼叫代码设置请求如下: 这是我发出的请求: 超过64个字符的firstName: 示例JSON: 如果不包

  • 我正在尝试在SoapUI中发出SOAP请求,它需要使用用户名和密码进行身份验证。我让SoapUI基于wsdl文件生成一个测试,并尝试调用该服务。我按照SoapUI网站上的步骤使用身份验证(https://www.soapui.org/soap-and-wsdl/authenticating-soap-requests.html),但我不能让它工作。我不熟悉SOAP,所以我可能缺少一些基本的东西。我

  • 当我尝试执行我得到一个 我正试图找出问题所在,但我不知道是什么原因造成的。我正在使用MongoEngine(和MongoDB) 我的设置中有以下内容。py: 这就是我得到的: 回溯:get_response 111中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site packages/django/cor