Go操纵Session

作者: 太阳上的雨天 分类: Go 发布时间: 2022-02-21 14:56

如果你使用的是框架,在框架中很好的支持了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)

}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注