golang中官方是不支持session的, 如果想要实现session则需要自己动手来实现,或者使用第三方的go-session实现库, 今天就给大家介绍一个go语言的第三方session实现库 go-sessions,支持 的存储方式有 cookie, file, redis, mysql等众多的存储。
使用示例:
import ("net/http""github.com/gorilla/sessions")// Note: Don't store your key in your source code. Pass it via an// environmental variable, or flag (or both), and don't accidentally commit it// alongside your code. Ensure your key is sufficiently random - i.e. use Go's// crypto/rand or securecookie.GenerateRandomKey(32) and persist the result.var store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))func MyHandler(w http.ResponseWriter, r *http.Request) {// Get a session. We're ignoring the error resulted from decoding an// existing session: Get() always returns a session, even if empty.session, _ := store.Get(r, "session-name")// Set some session values.session.Values["foo"] = "bar"session.Values[42] = 43// Save it before we write to the response/return from the handler.err := session.Save(r, w)if err != nil {http.Error(w, err.Error(), http.StatusInternalServerError)return}}
Github项目地址:
GitHub - tekintian/go-sessions: go语言里面的Sessions实现库, 支持众多的Session存储方式,cookie, redis, mysql等。 Package gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends.go语言里面的Sessions实现库, 支持众多的Session存储方式,cookie, redis, mysql等。 Package gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends. - tekintian/go-sessionshttps://github.com/tekintian/go-sessions