记一次beego的InsertFilter报错

83 阅读1分钟

使用InsertFilter过滤器一直报错

routers\router.go:24:52: cannot use FilterDemo (variable of type func(ctx *"cont
ext".Context)) as web.HandleFunc value in argument to beego.InsertFilter

原来InsertFilter方法的FilterFunc方法必须是func(*context.Context) 参数必须是context.Context

package routers

import (
	"demo/controllers"

	"github.com/beego/beego/v2/server/web/context"

	beego "github.com/beego/beego/v2/server/web"
)

func init() {
	beego.Router("/", &controllers.MainController{})
	beego.Router("/hello", &controllers.MainController{}, "get:GetHello")
	beego.Router("/demo/hello", &controllers.DemoController{}, "get:GetHello")

	// 实现FilterDemo
	var FilterDemo = func(ctx *context.Context) {
		var (
			title string
		)
		title = "禁止访问"
		ctx.WriteString(title)
	}
	//添加过滤器
	beego.InsertFilter("/demo/*", beego.BeforeRouter, FilterDemo)

}