我是beego框架的初学者,我在其中完成了很少的研发工作。 但是我需要一些与路由器相关的帮助。
我使用中间件和组路由器创建的路由很少,但是我不需要专家的建议。
让我分享我所做的例子。
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”命名空间中以放入外部,但我的“ NSBefore”将应用此后定义的所有方法。我需要2组。身份验证之前和之后。在身份验证之后,我想添加beego.NSBefore(AuthFilter)
。
我尝试使用策略,但无法按需使用。
beego.Policy("/api/v1/front/*","*", AuthFilter)
beego.Policy("/api/v1/admin/*","*", AuthFilter)
如果我要从策略中删除前端,则它将应用所有URL。
我们是否可以选择创建没有URL路径的组路由器,而这将涵盖我的概念?