broker/service: use wrapped micro client to authenticate requests (#1782)
This commit is contained in:
parent
b5314829fa
commit
c58ac35dfc
22
broker/service/options.go
Normal file
22
broker/service/options.go
Normal file
@ -0,0 +1,22 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/micro/go-micro/v2/broker"
|
||||
"github.com/micro/go-micro/v2/client"
|
||||
)
|
||||
|
||||
type clientKey struct{}
|
||||
|
||||
// Client to call broker service
|
||||
func Client(c client.Client) broker.Option {
|
||||
return func(o *broker.Options) {
|
||||
if o.Context == nil {
|
||||
o.Context = context.WithValue(context.Background(), clientKey{}, c)
|
||||
return
|
||||
}
|
||||
|
||||
o.Context = context.WithValue(o.Context, clientKey{}, c)
|
||||
}
|
||||
}
|
@ -138,6 +138,12 @@ func NewBroker(opts ...broker.Option) broker.Broker {
|
||||
|
||||
cli := client.DefaultClient
|
||||
|
||||
// get options client from the context. We set this in the context to prevent an import loop, as
|
||||
// the client depends on the broker
|
||||
if c, ok := options.Context.Value(clientKey{}).(client.Client); ok {
|
||||
cli = c
|
||||
}
|
||||
|
||||
return &serviceBroker{
|
||||
Addrs: addrs,
|
||||
Client: pb.NewBrokerService(DefaultName, cli),
|
||||
|
@ -643,7 +643,7 @@ func (c *cmd) Before(ctx *cli.Context) error {
|
||||
}
|
||||
|
||||
// Setup broker options.
|
||||
brokerOpts := []broker.Option{}
|
||||
brokerOpts := []broker.Option{brokerSrv.Client(microClient)}
|
||||
if len(ctx.String("broker_address")) > 0 {
|
||||
brokerOpts = append(brokerOpts, broker.Addrs(ctx.String("broker_address")))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user