Есть ли способ промежуточного маршрутизатора с групповым маршрутизатором?
Я новичок в Beego Framework, я провел несколько исследований и разработок внутри него. Но мне нужно несколько подсказок связанных роутеров.
Я создал несколько маршрутов с промежуточным программным обеспечением и групповым маршрутизатором, но мне нужно несколько предложений от эксперта.
Позвольте мне поделиться примером, который я сделал.
Router.go
func init() {
ns := beego.NewNamespace("/api/v1",
beego.NSNamespace("/front",
beego.NSBefore(AuthFilter),
beego.NSRouter("/user",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/test",&controllers.ObjectController{},"*:GetValueByAdmin"),
beego.NSRouter("/product",&controllers.ObjectController{},"*:GetValueByAdmin"),
),
beego.NSNamespace("/a1",
beego.NSRouter("/test1",&controllers.ObjectController{},"*:GetValueByAdmin1"),
beego.NSRouter("/test2",&controllers.ObjectController{},"*:GetValueByAdmin1"),
beego.NSInclude(
&controllers.UserController{},
),
),
)
beego.AddNamespace(ns)
}
var AuthFilter = func(ctx *context.Context) {
// The Authorization header should come in this format: Bearer <jwt>
// The first thing we do is check that the JWT exists
header := strings.Split(ctx.Input.Header("Authorization"), " ")
if header[0] != "Bearer" {
ctx.Abort(401, "Not authorized")
}
}
Я создал маршрутизатор, используя Пространство имен, и он работает нормально, используя этот URL ( http://localhost:8080/api/v1/front/test). Но я хочу удалить ключевое слово front из URL.
Я попробовал ниже варианты, такие как:
Я скопировал код в пространство имен "Front", чтобы поместить его наружу, но My "NSBefore" будет применять весь метод, определенный после этого. Мне нужно 2 группы. До авторизации и после аутентификации. В после аутентификации я хочу добавить
beego.NSBefore(AuthFilter)
,Я попытался использовать политику, но она не будет работать так, как мне нужно.
beego.Policy("/api/v1/front/*","*", AuthFilter)
beego.Policy("/api/v1/admin/*","*", AuthFilter)
Если я удалю фронт из политики, тогда будут применены все URL.
Есть ли у нас возможность создать групповой маршрутизатор без URL-пути, и он охватит мою концепцию?