Есть ли способ промежуточного маршрутизатора с групповым маршрутизатором?

Я новичок в 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.

Я попробовал ниже варианты, такие как:

  1. Я скопировал код в пространство имен "Front", чтобы поместить его наружу, но My "NSBefore" будет применять весь метод, определенный после этого. Мне нужно 2 группы. До авторизации и после аутентификации. В после аутентификации я хочу добавить beego.NSBefore(AuthFilter),

  2. Я попытался использовать политику, но она не будет работать так, как мне нужно.

    beego.Policy("/api/v1/front/*","*", AuthFilter)beego.Policy("/api/v1/admin/*","*", AuthFilter)

Если я удалю фронт из политики, тогда будут применены все URL.

Есть ли у нас возможность создать групповой маршрутизатор без URL-пути, и он охватит мою концепцию?

0 ответов

Другие вопросы по тегам