2016-09-30 2 views
2

Я начал разрабатывать веб-приложение, где задний конец - golang. Я использую beego framework для разработки этого приложения. Ранее я использовал для программирования в java.Java есть функция фильтра для фильтрации запроса по url.I стало известно, что мы можем реализовать его в beego после прочтения documentation.There они дали следующий пример кодаКак добавить фильтры в golang beego

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) 

Проблема в том, я не знаю, где использовать этот блок кода. ... Может кто-то помочь мне в этом. Я ценю вашу помощь. Спасибо

ответ

1

Вы можете сделать что-то вроде следующего:

  • Установить URL вы хотите защитить маршрутизатор и соответствующий фильтр
  • Создайте функцию фильтра, которая будет вызываться маршрутизатором и проверить пользователя

Более подробно:

// 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, "/") 
    } 
} 
+0

Спасибо, только то, что я хотел. У меня есть сомнения в этом. Мы должны начать сеанс перед входом в систему ... Извините, новый для программирования. Спасибо –

+0

Вы можете начать сеанс при запуске приложения, поэтому выберите yo ur от http://beego.me/docs/mvc/controller/session.md и сказать в основном, прежде чем beego.run() установит настройки сеанса. –

+0

Спасибо за вашу помощь Mr.Stef K –

Смежные вопросы