Golang&大猩猩会话 - 缓存防止注销功能

时间:2016-01-29 14:16:42

标签: session caching go gorilla

我已经构建了一个使用Go Gorilla会话包的应用程序。一切似乎都很好,除非我在注销时实施

func logout(w http.ResponseWriter, r *http.Request) {
  session, _ := store.Get(r, "authsesh")
  session.Values["access"] = "denied"
  session.Save(r, w)
  http.Redirect(w, r, "/", 302)
  return
}

由于浏览器会缓存需要身份验证的页面,因此在注销后仍可以访问该页面。我怎么能绕过那个?有没有办法阻止浏览器缓存页面?如果我清除缓存并保留cookie我可以看到注销已经产生了预期的效果,那么cookie没有任何问题。

1 个答案:

答案 0 :(得分:5)

在处理程序中设置正确的缓存标头:

func NoCache(h http.Handler) http.Handler) {
    fn := func(w http.ResponseWriter, r *http.Request) {
        // Set the headers
    }

    return http.HandlerFunc(fn)
}

// In your router
http.Handle("/user-dashboard", NoCache(http.HandlerFunc(YourDashboardHandler))

请注意,我们为代理和HTTP / 1.0客户端设置了多个标头。

您可以将这些内容包装到您可以应用的中间件中:

{{1}}