为什么这个大猩猩会话代码不起作用?
Why does this gorilla session code not work?
我是一个 golang 菜鸟,所以我正在通过为基于大猩猩的网络应用程序设置种子项目来制作我的第一个玩具应用程序。一切顺利,但会话代码没有像我预期的那样工作,here is the full code,这里只是相关的片段:
func getMyCounter(w http.ResponseWriter, r *http.Request){
session, _ := sessionStore.Get(r, counterSession)
if session.IsNew {
session.Values[myCounter] = 0
}
val := session.Values[myCounter].(int)
log.Printf("getMyCounter %d", val)
m := make(map[string]int)
m["counter"] = val
js, _ := json.Marshal(m)
w.Header().Set("Content-Type", "application/json")
w.Write(js)
}
func incrementMyCounter(w http.ResponseWriter, r *http.Request){
log.Println("incrementMyCounter")
session, _ := sessionStore.Get(r, counterSession)
if session.IsNew {
session.Values[myCounter] = 0
}
val := session.Values[myCounter].(int)
session.Values[myCounter] = val + 1
getMyCounter(w, r)
}
我对 getMyCounter 和 incrementMyCounter 的调用总是 return 0
感谢 JimB 指出了显而易见的问题,我需要在 creating/editing 会话之后添加对 session.Save(r, w)
的调用。
我是一个 golang 菜鸟,所以我正在通过为基于大猩猩的网络应用程序设置种子项目来制作我的第一个玩具应用程序。一切顺利,但会话代码没有像我预期的那样工作,here is the full code,这里只是相关的片段:
func getMyCounter(w http.ResponseWriter, r *http.Request){
session, _ := sessionStore.Get(r, counterSession)
if session.IsNew {
session.Values[myCounter] = 0
}
val := session.Values[myCounter].(int)
log.Printf("getMyCounter %d", val)
m := make(map[string]int)
m["counter"] = val
js, _ := json.Marshal(m)
w.Header().Set("Content-Type", "application/json")
w.Write(js)
}
func incrementMyCounter(w http.ResponseWriter, r *http.Request){
log.Println("incrementMyCounter")
session, _ := sessionStore.Get(r, counterSession)
if session.IsNew {
session.Values[myCounter] = 0
}
val := session.Values[myCounter].(int)
session.Values[myCounter] = val + 1
getMyCounter(w, r)
}
我对 getMyCounter 和 incrementMyCounter 的调用总是 return 0
感谢 JimB 指出了显而易见的问题,我需要在 creating/editing 会话之后添加对 session.Save(r, w)
的调用。