micro网关鉴权
这个鉴权无非就是通过中间件来管制拜访,须要重写micro代码
咱们只须要编写一个plugin函数,并注册到micro外面即可实现申请中间件的性能
代码如下
package mainimport ( "fmt" "github.com/micro/cli" "github.com/micro/micro/cmd" "github.com/micro/micro/plugin" "net/http")func JWTAuthWrapper() plugin.Handler { return func(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Println("解决http") h.ServeHTTP(w, r) }) }}func jwtPlugin() plugin.Plugin { //jwt 鉴权 return plugin.NewPlugin( plugin.WithName("auth"), plugin.WithHandler( JWTAuthWrapper()), //参数 plugin.WithFlag(cli.StringFlag{ Name: "consul_address", Usage: "consul address for K/V", EnvVar: "CONSUL_ADDRESS", Value: "127.0.0.1:8500", }), plugin.WithInit(func(ctx *cli.Context) error { fmt.Println("初始化") return nil }))}func main() { _ = plugin.Register(jwtPlugin()) cmd.Init()}
go.mod 文件
module demogo 1.13require ( github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 github.com/go-sql-driver/mysql v1.5.0 github.com/micro/cli v0.2.0 github.com/micro/go-plugins v1.5.1 github.com/micro/micro v1.18.0)