У меня есть веб-приложение golang, созданное с помощью фреймворка Revel. Я столкнулся с проблемой перенаправления на предыдущую страницу после входа в систему. У меня есть несколько страниц, на которых пользователи должны войти в систему для просмотра содержимого. Я успешно перенаправил на страницу входа, если пользователи не вошли в систему. Вот мой фрагмент кода ниже:
func checkUser(c *revel.Controller) revel.Result {
if _, ok := c.Session["user"]; ok {
return nil
}
var cont = c.Request.RequestURI
fmt.Printf("Requesting URL : ", cont)
return c.Redirect(LoginApp.Login, cont)
}
func init() {
revel.InterceptFunc(checkUser, revel.BEFORE, &App{})
}
А вот и мой app.go
type App struct {
*revel.Controller
}
func (c App) Application() revel.Result {
var app = make(map[string]string)
app["appTitle"] = "Hourglass"
app["ngApp"] = "app"
app["theme"] = "dark"
app["ngController"] = "ApplicationController"
return c.Render(app)
}
func (c App) Test() revel.Result {
var app = make(map[string]string)
app["appTitle"] = "Hourglass"
app["ngApp"] = "app"
app["theme"] = "dark"
app["ngController"] = "ApplicationController"
return c.Render(app)
}
Теперь у меня есть файл login.go, содержащий метод ServiceLogin.
func (c LoginApp) ServiceLogin(user models.User) revel.Result {
username := user.UserName
password := user.Password
fmt.Printf("", username)
fmt.Printf("", password)
sess := service.GetSession()
usercoll := sess.DB("hourglass_dev").C("user")
var result models.User
var err = usercoll.Find(bson.M{"UserName": username, "Password": password}).One(&result)
fmt.Printf("", result)
fmt.Printf("", c.Request.RequestURI)
if err != nil {
fmt.Printf("", err)
}
//var app := make(map[string]string)
//return c.Render(app)
c.Session["user"] = username
return c.Redirect(App.Application)
}
Теперь в последней строке метода я должен жестко закодировать App.Application, вместо которого я хочу использовать запрашивающий URL-адрес, чтобы, когда пользователь успешно вошел в систему, он автоматически перенаправлял на страницу, которую они просят о.