golang 实现session
时间: 2023-09-18 07:13:53 浏览: 124
在 Golang 中实现 session 可以使用第三方库,比如 `gorilla/sessions`。这个库提供了一个简单易用的 API,可以轻松地实现 session 功能。
以下是一个简单的示例:
```go
package main
import (
"net/http"
"github.com/gorilla/sessions"
)
var store = sessions.NewCookieStore([]byte("secret"))
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
session, err := store.Get(r, "session-name")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if session.IsNew {
session.Values["count"] = 0
}
session.Values["count"] = session.Values["count"].(int) + 1
err = session.Save(r, w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Write([]byte("Count: " + session.Values["count"].(string)))
}
```
这个示例中,我们使用 `gorilla/sessions` 创建了一个 CookieStore,并在 `handler` 函数中使用了 session。每次请求处理时,我们都会从 Cookie 中获取 session,然后将计数器加 1,并将计数器的值保存回 session 中。最后,我们将 session 写回到 Cookie 中。
当用户再次访问网站时,我们可以从 Cookie 中获取 session,并将计数器的值加 1,以便继续跟踪用户的活动。
阅读全文