【发布时间】:2021-05-11 21:15:12
【问题描述】:
我正在开发一个使用 Grpc 连接到服务器的颤振应用程序。一些服务需要额外的元数据来进行身份验证,所以我想到的第一件事是实现一个拦截器来将元数据添加到这些请求中,如下所示:
class MyClientInterceptor implements ClientInterceptor {
@override
ResponseFuture<R> interceptUnary<Q, R>(ClientMethod<Q, R> method, Q request, CallOptions options, invoker) {
var newOptions = CallOptions.from([options])
..metadata.putIfAbsent('token', () => 'Some-Token');
return invoker(method, request, newOptions);
}
}
但我得到 Caught error: Unsupported operation: Cannot modify unmodifiable map 因为 CallOptions 使用不可修改的地图。
第一个问题:向某些请求添加身份验证而不是使用这些元数据创建客户端存根的最佳做法是什么?
第二:如何从选项中复制元数据,修改它并使用修改后的对象?
【问题讨论】:
标签: flutter dart grpc grpc-dart