【问题标题】:Dart gRPC response interceptorDart gRPC 响应拦截器
【发布时间】:2023-01-22 17:46:10
【问题描述】:

我有一个 Flutter 应用程序,它通过 gRPC 连接到我的后端。对后端的未经授权的请求会导致 gRPC 错误 16(未经身份验证)。每当请求导致 gRPC 错误 16 时,我想将我的应用程序用户重定向到登录页面。自然地,在用户登录后,我希望重新发送原始请求。

我可以通过等待的回应来实现代码中的每个请求并检查错误 16,但这会很乏味。我感兴趣的是一个 gRPC 响应拦截器,我可以将其添加到我的 gRPC 存根中。

经过研究,我遗憾地得出结论,唯一可用的拦截器是ClientInterceptor,它只在请求发送之前拦截它们。

真的没有办法拦截响应还是我遗漏了什么?有没有更好的方法来彻底解决问题?

【问题讨论】:

    标签: flutter dart routes grpc interceptor


    【解决方案1】:

    听起来您正在寻找一种方法来拦截 Flutter 应用程序中的 gRPC 响应并处理错误 16(未经验证) 通过将用户重定向到登录页面。

    实现此目的的一种方法是在服务器端使用 gRPC 拦截器,它可以在响应发送回客户端之前拦截响应。此拦截器可以检查错误 16,如果存在,则将自定义标头或元数据添加到响应中,指示用户需要重定向到登录页面。

    在客户端,您可以使用 ClientInterceptor 拦截响应并检查自定义标头或元数据。如果存在,您可以将用户重定向到登录页面。用户登录后,您可以重新发送原始请求。

    另一种方法可能是使用 ClientInterceptor 来捕获未经身​​份验证的请求的错误,并抛出一个您可以在代码中处理的异常。这样,您可以将所有未经身份验证的请求处理集中在一个地方,并且您不必在您发出的每个请求中检查错误。

    总之,虽然 gRPC 没有对响应拦截器的内置支持,但您可以结合使用服务器端拦截器和客户端拦截器来在您的 Flutter 应用程序中实现所需的行为。第二种方法可能是一种更优雅和可维护的解决方案,但第一种方法可能更有效

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多