如果你使用的是框架,在框架中很好的支持了 session 的实现。
但如果你没有使用框架,使用的 Go 原生,那么是不支持 Session 的实现的。
在 Go 的标准库中并没有提供对 Sessoin 的实现。可以自己实现创建管理器存到内存、数据库或者文件当中。当然前提你会写或者有时间去写。小编自己去 github 上找了一个别人写好的包,拿来直接用
安装
在自己的项目中,执行以下命令安装 go-session 包
go get github.com/kataras/go-sessions/v3
实现
package main
import (
"fmt"
"github.com/kataras/go-sessions/v3"
"net/http"
"time"
)
func main() {
sess := sessions.New(sessions.Config{
Cookie: "mysessionid",
Expires: time.Hour * 2,
DisableSubdomainPersistence: false,
})
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte(fmt.Sprintf("You should navigate to the /set, /get, /delete, /clear,/destroy instead")))
})
// 设置 session
http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {s := sess.Start(w, r)
s.Set("name", "admin")
w.Write([]byte(fmt.Sprintf("All ok session setted to: %s", s.GetString("name"))))
})
// 获取 session
http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {s := sess.Start(w, r)
name := s.GetString("name")
w.Write([]byte(fmt.Sprintf("The name on the /set was: %s", name)))
})
// 删除 session
http.HandleFunc("/del", func(w http.ResponseWriter, r *http.Request) {sess.Start(w, r).Delete("name")
})
// 清除 session
http.HandleFunc("/clear", func(w http.ResponseWriter, r *http.Request) {sess.Start(w, r).Clear()})
// 刷新 session 的过期时间
http.HandleFunc("/update", func(w http.ResponseWriter, r *http.Request) {sess.ShiftExpiration(w, r) 如果你使用的是框架,在框架中很好的支持了 session 的实现。
但如果你没有使用框架,使用的 Go 原生,那么是不支持 Session 的实现的。
在 Go 的标准库中并没有提供对 Sessoin 的实现。可以自己实现创建管理器存到内存、数据库或者文件当中。当然前提你会写或者有时间去写。小编自己去 github 上找了一个别人写好的包,拿来直接用
安装
在自己的项目中,执行以下命令安装 go-session 包
go get github.com/kataras/go-sessions/v3
实现
package main
import (
"fmt"
"github.com/kataras/go-sessions/v3"
"net/http"
"time"
)
func main() {
sess := sessions.New(sessions.Config{
Cookie: "mysessionid",
Expires: time.Hour * 2,
DisableSubdomainPersistence: false,
})
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte(fmt.Sprintf("You should navigate to the /set, /get, /delete, /clear,/destroy instead")))
})
// 设置 session
http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {s := sess.Start(w, r)
s.Set("name", "admin")
w.Write([]byte(fmt.Sprintf("All ok session setted to: %s", s.GetString("name"))))
})
// 获取 session
http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {s := sess.Start(w, r)
name := s.GetString("name")
w.Write([]byte(fmt.Sprintf("The name on the /set was: %s", name)))
})
// 删除 session
http.HandleFunc("/del", func(w http.ResponseWriter, r *http.Request) {sess.Start(w, r).Delete("name")
})
// 清除 session
http.HandleFunc("/clear", func(w http.ResponseWriter, r *http.Request) {sess.Start(w, r).Clear()})
// 刷新 session 的过期时间
http.HandleFunc("/update", func(w http.ResponseWriter, r *http.Request) {sess.ShiftExpiration(w, r)
})
// 销毁 session 和 cookie
http.HandleFunc("/destroy", func(w http.ResponseWriter, r *http.Request) {sess.Destroy(w, r)
})
http.ListenAndServe(":8081", nil)
}
正文完