package filter import ( "context" "fmt" "dubbo.apache.org/dubbo-go/v3/common/extension" "dubbo.apache.org/dubbo-go/v3/filter" "dubbo.apache.org/dubbo-go/v3/protocol" ) func init() { extension.SetFilter("authFilter", NewAuthFilter) } func NewAuthFilter() filter.Filter { return &AuthFilter{} } type AuthFilter struct { } func (f *AuthFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { //xxx 接收凭证 invocation.SetAttachment("usertoken", "this is jwt token") return invoker.Invoke(ctx, invocation) } func (f *AuthFilter) OnResponse(ctx context.Context, result protocol.Result, invoker protocol.Invoker, protocol protocol.Invocation) protocol.Result { fmt.Println("AuthFilter OnResponse is called") myAttachmentMap := make(map[string]interface{}) myAttachmentMap["key1"] = "value1" myAttachmentMap["key2"] = []string{"value1", "value2"} result.SetAttachments(myAttachmentMap) fmt.Printf("result %v--", result) return result }