Grpc-dart 不能处理 401

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Grpc-dart 不能处理 401相关的知识,希望对你有一定的参考价值。

参考技术A JWT 如果判断 Token 失效, 会直接返回 401 . 但是在 Flutter 中, 无法处理...
catch 到的 GrpcError 一直是 unimplemented , 而不是期待的 unauthenticated

先用拦截器打印出 401 时响应的 headers.

401 时, 返回 content-length: 0 .

在看看 Flutter 中 ResponseFuture (\pub.flutter-io.cn\grpc-2.8.0\lib\src\client\common.dart) 的定义:

在父构造函数中, 首先判断的 _call.respnose 是不是收到多次, 其次判断它是不是为 null .

这个地方如果先判断 _call.headers[":status"] 是不是 401 就可以了. 但是 _call.headers 又是一个 Future<Map<String,String>> , 需要用到 async/await , 但是在构造函数中, 使用异步???脑壳有点大...蛋疼...

我也尝试用拦截器:

但是 get 不到关键点, 无法用 GrpcError.unauthenticated() 替换原有异常...

以上是关于Grpc-dart 不能处理 401的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 中的 401 未经授权的错误处理

使用 RxSwift 和 URLSession 处理 401 状态

十月CMS 401、402、403、503、400错误代码处理

如何防止 IIS7 处理 HTTP 状态码 401?

使用 react-router 处理 401 未授权代码

Spring Boot 从异常处理程序返回 401 状态自定义对象