如何在golang beego中添加过滤器

I have started developing web application where the back end is golang.I m using beego framework to develop this application.Previously i used to program in java.Java have an filter function to filter the request by url.I came to know that we can implement it in beego after reading the documentation.There they have given the following example code

var FilterUser = func(ctx *context.Context) {
    if strings.HasPrefix(ctx.Input.URL(), "/login") {
        return
    }

    _, ok := ctx.Input.Session("uid").(int)
    if !ok {
        ctx.Redirect(302, "/login")
    }
}

beego.InsertFilter("/*", beego.BeforeRouter, FilterUser) 

The Problem is I don't know where to use this block of code....Can someone help me in this.I appreciate your help.Thanks

You can do something like the following:

  • Set the URL you want to protect in router and the corresponding filter
  • Create a filter function which will be called by the router and check the user

In more detail:

// A URL set in router.go
beego.InsertFilter("/admin/", beego.BeforeRouter, controllers.ProtectAdminPages)

// A Filter that runs before the controller
// Filter to protect admin pages
var ProtectAdminPages = func(ctx *context.Context) {
    sess, _ := beego.GlobalSessions.SessionStart(ctx.ResponseWriter, ctx.Request)
    defer sess.SessionRelease(ctx.ResponseWriter)
    // read the session from the request
    ses := sess.Get("mysession")
    if ses != nil {
        s := ses.(map[string]string)
        // get the key identifying the user id
        userId, _ := strconv.Atoi(s["id"])
        // a utility function that searches the database
        // gets the user and checks for admin privileges
        if !utils.UserIsAdmin(userId) {
            ctx.Redirect(301, "/some-other-page")
        }
    } else {
        ctx.Redirect(301, "/")
    }
}